From 207e846ae6fe2147a32e96e02848e781b270695b Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 1 Apr 2013 00:06:15 +0200 Subject: [PATCH] Check crons after saving settings. fix #1556 & #1557 --- couchpotato/core/_base/updater/main.py | 10 +++++++++- couchpotato/core/plugins/automation/main.py | 7 ++++++- couchpotato/core/plugins/renamer/main.py | 20 ++++++++++++++++---- couchpotato/core/plugins/searcher/main.py | 7 ++++++- couchpotato/core/settings/__init__.py | 3 +++ 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index 18d2c30..0703155 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -32,7 +32,6 @@ class Updater(Plugin): else: self.updater = SourceUpdater() - fireEvent('schedule.interval', 'updater.check', self.autoUpdate, hours = 6) addEvent('app.load', self.autoUpdate) addEvent('updater.info', self.info) @@ -52,6 +51,15 @@ class Updater(Plugin): 'return': {'type': 'see updater.info'} }) + addEvent('setting.save.updater.enabled.after', self.setCrons) + + def setCrons(self): + + fireEvent('schedule.remove', 'updater.check', single = True) + if self.isEnabled(): + fireEvent('schedule.interval', 'updater.check', self.autoUpdate, hours = 6) + self.autoUpdate() # Check after enabling + def autoUpdate(self): if self.check() and self.conf('automatic') and not self.updater.update_failed: if self.updater.doUpdate(): diff --git a/couchpotato/core/plugins/automation/main.py b/couchpotato/core/plugins/automation/main.py index f4ede40..67bae1d 100644 --- a/couchpotato/core/plugins/automation/main.py +++ b/couchpotato/core/plugins/automation/main.py @@ -10,11 +10,16 @@ class Automation(Plugin): def __init__(self): - fireEvent('schedule.interval', 'automation.add_movies', self.addMovies, hours = self.conf('hour', default = 12)) + addEvent('app.load', self.setCrons) if not Env.get('dev'): addEvent('app.load', self.addMovies) + addEvent('setting.save.automation.hour.after', self.setCrons) + + def setCrons(self): + fireEvent('schedule.interval', 'automation.add_movies', self.addMovies, hours = self.conf('hour', default = 12)) + def addMovies(self): movies = fireEvent('automation.get_movies', merge = True) diff --git a/couchpotato/core/plugins/renamer/main.py b/couchpotato/core/plugins/renamer/main.py index aba2072..06487aa 100644 --- a/couchpotato/core/plugins/renamer/main.py +++ b/couchpotato/core/plugins/renamer/main.py @@ -35,12 +35,24 @@ class Renamer(Plugin): addEvent('app.load', self.scan) addEvent('app.load', self.checkSnatched) + addEvent('app.load', self.setCrons) - if self.conf('run_every') > 0: - fireEvent('schedule.interval', 'renamer.check_snatched', self.checkSnatched, minutes = self.conf('run_every')) + # Enable / disable interval + addEvent('setting.save.renamer.enabled.after', self.setCrons) + addEvent('setting.save.renamer.run_every.after', self.setCrons) + addEvent('setting.save.renamer.force_every.after', self.setCrons) - if self.conf('force_every') > 0: - fireEvent('schedule.interval', 'renamer.check_snatched_forced', self.scan, hours = self.conf('force_every')) + def setCrons(self): + + fireEvent('schedule.remove', 'renamer.check_snatched') + if self.isEnabled() and self.conf('run_every') > 0: + fireEvent('schedule.interval', 'renamer.check_snatched', self.checkSnatched, minutes = self.conf('run_every'), single = True) + + fireEvent('schedule.remove', 'renamer.check_snatched_forced') + if self.isEnabled() and self.conf('force_every') > 0: + fireEvent('schedule.interval', 'renamer.check_snatched_forced', self.scan, hours = self.conf('force_every'), single = True) + + return True def scanView(self): diff --git a/couchpotato/core/plugins/searcher/main.py b/couchpotato/core/plugins/searcher/main.py index a34b0b4..8a23ca4 100644 --- a/couchpotato/core/plugins/searcher/main.py +++ b/couchpotato/core/plugins/searcher/main.py @@ -50,7 +50,12 @@ class Searcher(Plugin): }"""}, }) - # Schedule cronjob + addEvent('app.load', self.setCrons) + addEvent('setting.save.searcher.cron_day.after', self.setCrons) + addEvent('setting.save.searcher.cron_hour.after', self.setCrons) + addEvent('setting.save.searcher.cron_minute.after', self.setCrons) + + def setCrons(self): fireEvent('schedule.cron', 'searcher.all', self.allMovies, day = self.conf('cron_day'), hour = self.conf('cron_hour'), minute = self.conf('cron_minute')) def allMoviesView(self): diff --git a/couchpotato/core/settings/__init__.py b/couchpotato/core/settings/__init__.py index 00f77a6..45443fc 100644 --- a/couchpotato/core/settings/__init__.py +++ b/couchpotato/core/settings/__init__.py @@ -189,6 +189,9 @@ class Settings(object): self.set(section, option, (new_value if new_value else value).encode('unicode_escape')) self.save() + # After save (for re-interval etc) + fireEvent('setting.save.%s.%s.after' % (section, option), single = True) + return jsonified({ 'success': True, })