Only overwrite blocklist.cache if the import was successful

This commit is contained in:
Andrew Resch 2008-12-18 02:38:34 +00:00
parent 3f46136362
commit 93670b05bc
1 changed files with 23 additions and 11 deletions

View File

@ -29,6 +29,7 @@ import os
import datetime
import gobject
import time
import shutil
from deluge.log import LOG as log
from deluge.plugins.corepluginbase import CorePluginBase
@ -150,12 +151,19 @@ class Core(CorePluginBase):
self.num_blocked = 0
# If we have a newly downloaded file, lets try that before the .cache
if os.path.exists(deluge.configmanager.get_config_dir("blocklist.download")):
bl_file = deluge.configmanager.get_config_dir("blocklist.download")
using_download = True
else:
bl_file = deluge.configmanager.get_config_dir("blocklist.cache")
using_download = False
# Open the file for reading
try:
read_list = FORMATS[self.config["listtype"]][1](
deluge.configmanager.get_config_dir("blocklist.cache"))
read_list = FORMATS[self.config["listtype"]][1](bl_file)
except Exception, e:
log.debug("Unable to read blocklist.cache: %s", e)
log.debug("Unable to read blocklist file: %s", e)
return
try:
@ -169,6 +177,16 @@ class Core(CorePluginBase):
log.debug("Exception during import: %s", e)
else:
log.debug("Blocklist import complete!")
# The import was successful so lets move this to blocklist.cache
if using_download:
log.debug("Moving blocklist.download to blocklist.cache")
shutil.move(bl_file, deluge.configmanager.get_config_dir("blocklist.cache"))
# Set information about the file
self.config["file_type"] = self.config["listtype"]
self.config["file_url"] = self.config["url"]
list_stats = os.stat(deluge.configmanager.get_config_dir("blocklist.cache"))
self.config["file_date"] = datetime.datetime.fromtimestamp(list_stats.st_mtime).ctime()
self.config["file_size"] = list_size = list_stats.st_size
self.is_importing = False
@ -204,20 +222,14 @@ class Core(CorePluginBase):
try:
urllib.urlretrieve(
self.config["url"],
deluge.configmanager.get_config_dir("blocklist.cache"),
deluge.configmanager.get_config_dir("blocklist.download"),
on_retrieve_data)
except Exception, e:
log.debug("Error downloading blocklist: %s", e)
os.remove(deluge.configmanager.get_config_dir("blocklist.download"))
continue
else:
log.debug("Blocklist successfully downloaded..")
# Set information about the file
self.config["file_type"] = self.config["listtype"]
self.config["file_url"] = self.config["url"]
list_stats = os.stat(deluge.configmanager.get_config_dir("blocklist.cache"))
self.config["file_date"] = datetime.datetime.fromtimestamp(list_stats.st_mtime).ctime()
self.config["file_size"] = list_size = list_stats.st_size
gobject.idle_add(_call_callback, callback, load)
return