Dont store a reference to the DB in the scheduler

This commit is contained in:
Kovid Goyal 2022-07-29 23:16:10 +05:30
parent df2db001ba
commit a6b6d83d31
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 17 additions and 13 deletions

View File

@ -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()

View File

@ -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

View File

@ -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,

View File

@ -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()