When deleting custom recipes, use recycle bin

Fixes #1186142 [Recipe deleted without option to cancel deletion](https://bugs.launchpad.net/calibre/+bug/1186142)
This commit is contained in:
Kovid Goyal 2013-05-31 12:39:13 +05:30
parent 9a0d88dffa
commit 0fbba2966c

View File

@ -16,6 +16,7 @@ from lxml.builder import ElementMaker
from calibre import browser, force_unicode from calibre import browser, force_unicode
from calibre.utils.date import parse_date, now as nowf, utcnow, tzlocal, \ from calibre.utils.date import parse_date, now as nowf, utcnow, tzlocal, \
isoformat, fromordinal isoformat, fromordinal
from calibre.utils.recycle_bin import delete_file
NS = 'http://calibre-ebook.com/recipe_collection' NS = 'http://calibre-ebook.com/recipe_collection'
E = ElementMaker(namespace=NS, nsmap={None:NS}) E = ElementMaker(namespace=NS, nsmap={None:NS})
@ -167,7 +168,7 @@ def remove_custom_recipe(id_):
fname = existing[1] fname = existing[1]
del custom_recipes[id_] del custom_recipes[id_]
try: try:
os.remove(os.path.join(bdir, fname)) delete_file(os.path.join(bdir, fname))
except: except:
pass pass
@ -400,7 +401,7 @@ class SchedulerConfig(object):
now = nowf() now = nowf()
ld_local = ld.astimezone(tzlocal()) ld_local = ld.astimezone(tzlocal())
day, hour, minute = sch day, hour, minute = sch
return is_weekday(day, now) and \ return is_weekday(day, now) and \
not was_downloaded_already_today(ld_local, now) and \ not was_downloaded_already_today(ld_local, now) and \
is_time(now, hour, minute) is_time(now, hour, minute)
elif typ == 'days_of_week': elif typ == 'days_of_week':
@ -412,7 +413,7 @@ class SchedulerConfig(object):
if is_weekday(day, now): if is_weekday(day, now):
have_day = True have_day = True
break break
return have_day and \ return have_day and \
not was_downloaded_already_today(ld_local, now) and \ not was_downloaded_already_today(ld_local, now) and \
is_time(now, hour, minute) is_time(now, hour, minute)
elif typ == 'days_of_month': elif typ == 'days_of_month':
@ -420,7 +421,7 @@ class SchedulerConfig(object):
ld_local = ld.astimezone(tzlocal()) ld_local = ld.astimezone(tzlocal())
days, hour, minute = sch days, hour, minute = sch
have_day = now.day in days have_day = now.day in days
return have_day and \ return have_day and \
not was_downloaded_already_today(ld_local, now) and \ not was_downloaded_already_today(ld_local, now) and \
is_time(now, hour, minute) is_time(now, hour, minute)
@ -445,10 +446,10 @@ class SchedulerConfig(object):
def clear_account_info(self, urn): def clear_account_info(self, urn):
with self.lock: with self.lock:
for x in self.iter_accounts(): for x in self.iter_accounts():
if x.get('id', False) == urn: if x.get('id', False) == urn:
x.getparent().remove(x) x.getparent().remove(x)
self.write_scheduler_file() self.write_scheduler_file()
break break
def get_customize_info(self, urn): def get_customize_info(self, urn):
keep_issues = 0 keep_issues = 0
@ -526,6 +527,3 @@ class SchedulerConfig(object):
self.schedule_recipe(recipe, typ, schedule, self.schedule_recipe(recipe, typ, schedule,
last_downloaded=r['last_downloaded']) last_downloaded=r['last_downloaded'])