diff --git a/src/calibre/gui2/actions/fetch_news.py b/src/calibre/gui2/actions/fetch_news.py index f3297aa47b..6ad68f068c 100644 --- a/src/calibre/gui2/actions/fetch_news.py +++ b/src/calibre/gui2/actions/fetch_news.py @@ -28,17 +28,14 @@ class FetchNewsAction(InterfaceAction): def genesis(self): self.conversion_jobs = {} - def init_scheduler(self, db): + def init_scheduler(self): from calibre.gui2.dialogs.scheduler import Scheduler - self.scheduler = Scheduler(self.gui, db) + self.scheduler = Scheduler(self.gui) self.scheduler.start_recipe_fetch.connect(self.download_scheduled_recipe, type=Qt.ConnectionType.QueuedConnection) self.qaction.setMenu(self.scheduler.news_menu) self.qaction.triggered.connect( self.scheduler.show_dialog) - def library_changed(self, db): - self.scheduler.database_changed(db) - def initialization_complete(self): self.connect_scheduler() diff --git a/src/calibre/gui2/dialogs/scheduler.py b/src/calibre/gui2/dialogs/scheduler.py index e9ef5b00cf..7a06c1d49f 100644 --- a/src/calibre/gui2/dialogs/scheduler.py +++ b/src/calibre/gui2/dialogs/scheduler.py @@ -572,7 +572,7 @@ class Scheduler(QObject): delete_old_news = pyqtSignal(object) start_recipe_fetch = pyqtSignal(object) - def __init__(self, parent, db): + def __init__(self, parent): QObject.__init__(self, parent) self.internet_connection_failed = False self._parent = parent @@ -584,7 +584,6 @@ class Scheduler(QObject): d.setModal(False) self.recipe_model = RecipeModel() - self.db = db self.lock = QRecursiveMutex() self.download_queue = set() @@ -608,14 +607,22 @@ class Scheduler(QObject): self.oldest = gconf['oldest_news'] QTimer.singleShot(5 * 1000, self.oldest_check) - def database_changed(self, db): - self.db = db + @property + def db(self): + from calibre.gui2.ui import get_gui + gui = get_gui() + if gui is not None: + return gui.current_db def oldest_check(self): if self.oldest > 0: delta = timedelta(days=self.oldest) + db = self.db + if db is None: + QTimer.singleShot(5 * 1000, self.oldest_check) + return try: - ids = list(self.db.tags_older_than(_('News'), + ids = list(db.tags_older_than(_('News'), delta, must_have_authors=['calibre'])) except: # Happens if library is being switched diff --git a/src/calibre/gui2/layout.py b/src/calibre/gui2/layout.py index e5fba14e8a..ed11ecd916 100644 --- a/src/calibre/gui2/layout.py +++ b/src/calibre/gui2/layout.py @@ -326,7 +326,7 @@ class MainWindowMixin: # {{{ def __init__(self, *args, **kwargs): pass - def init_main_window_mixin(self, db): + def init_main_window_mixin(self): self.setObjectName('MainWindow') self.setWindowIcon(QIcon.ic('lt.png')) self.setWindowTitle(__appname__) @@ -340,7 +340,7 @@ class MainWindowMixin: # {{{ self.resize(1012, 740) self.location_manager = LocationManager(self) - self.iactions['Fetch News'].init_scheduler(db) + self.iactions['Fetch News'].init_scheduler() self.search_bar = SearchBar(self) self.bars_manager = BarsManager(self.donate_action, diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 47f0046db6..57f0af4ee1 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -232,7 +232,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ _('&Donate to support calibre'), self) for st in self.istores.values(): st.do_genesis() - MainWindowMixin.init_main_window_mixin(self, db) + MainWindowMixin.init_main_window_mixin(self) # Jobs Button {{{ self.job_manager = JobManager()