mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Dont store a reference to the DB in the scheduler
This commit is contained in:
parent
df2db001ba
commit
a6b6d83d31
@ -28,17 +28,14 @@ class FetchNewsAction(InterfaceAction):
|
|||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.conversion_jobs = {}
|
self.conversion_jobs = {}
|
||||||
|
|
||||||
def init_scheduler(self, db):
|
def init_scheduler(self):
|
||||||
from calibre.gui2.dialogs.scheduler import Scheduler
|
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.scheduler.start_recipe_fetch.connect(self.download_scheduled_recipe, type=Qt.ConnectionType.QueuedConnection)
|
||||||
self.qaction.setMenu(self.scheduler.news_menu)
|
self.qaction.setMenu(self.scheduler.news_menu)
|
||||||
self.qaction.triggered.connect(
|
self.qaction.triggered.connect(
|
||||||
self.scheduler.show_dialog)
|
self.scheduler.show_dialog)
|
||||||
|
|
||||||
def library_changed(self, db):
|
|
||||||
self.scheduler.database_changed(db)
|
|
||||||
|
|
||||||
def initialization_complete(self):
|
def initialization_complete(self):
|
||||||
self.connect_scheduler()
|
self.connect_scheduler()
|
||||||
|
|
||||||
|
@ -572,7 +572,7 @@ class Scheduler(QObject):
|
|||||||
delete_old_news = pyqtSignal(object)
|
delete_old_news = pyqtSignal(object)
|
||||||
start_recipe_fetch = pyqtSignal(object)
|
start_recipe_fetch = pyqtSignal(object)
|
||||||
|
|
||||||
def __init__(self, parent, db):
|
def __init__(self, parent):
|
||||||
QObject.__init__(self, parent)
|
QObject.__init__(self, parent)
|
||||||
self.internet_connection_failed = False
|
self.internet_connection_failed = False
|
||||||
self._parent = parent
|
self._parent = parent
|
||||||
@ -584,7 +584,6 @@ class Scheduler(QObject):
|
|||||||
d.setModal(False)
|
d.setModal(False)
|
||||||
|
|
||||||
self.recipe_model = RecipeModel()
|
self.recipe_model = RecipeModel()
|
||||||
self.db = db
|
|
||||||
self.lock = QRecursiveMutex()
|
self.lock = QRecursiveMutex()
|
||||||
self.download_queue = set()
|
self.download_queue = set()
|
||||||
|
|
||||||
@ -608,14 +607,22 @@ class Scheduler(QObject):
|
|||||||
self.oldest = gconf['oldest_news']
|
self.oldest = gconf['oldest_news']
|
||||||
QTimer.singleShot(5 * 1000, self.oldest_check)
|
QTimer.singleShot(5 * 1000, self.oldest_check)
|
||||||
|
|
||||||
def database_changed(self, db):
|
@property
|
||||||
self.db = db
|
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):
|
def oldest_check(self):
|
||||||
if self.oldest > 0:
|
if self.oldest > 0:
|
||||||
delta = timedelta(days=self.oldest)
|
delta = timedelta(days=self.oldest)
|
||||||
|
db = self.db
|
||||||
|
if db is None:
|
||||||
|
QTimer.singleShot(5 * 1000, self.oldest_check)
|
||||||
|
return
|
||||||
try:
|
try:
|
||||||
ids = list(self.db.tags_older_than(_('News'),
|
ids = list(db.tags_older_than(_('News'),
|
||||||
delta, must_have_authors=['calibre']))
|
delta, must_have_authors=['calibre']))
|
||||||
except:
|
except:
|
||||||
# Happens if library is being switched
|
# Happens if library is being switched
|
||||||
|
@ -326,7 +326,7 @@ class MainWindowMixin: # {{{
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def init_main_window_mixin(self, db):
|
def init_main_window_mixin(self):
|
||||||
self.setObjectName('MainWindow')
|
self.setObjectName('MainWindow')
|
||||||
self.setWindowIcon(QIcon.ic('lt.png'))
|
self.setWindowIcon(QIcon.ic('lt.png'))
|
||||||
self.setWindowTitle(__appname__)
|
self.setWindowTitle(__appname__)
|
||||||
@ -340,7 +340,7 @@ class MainWindowMixin: # {{{
|
|||||||
self.resize(1012, 740)
|
self.resize(1012, 740)
|
||||||
self.location_manager = LocationManager(self)
|
self.location_manager = LocationManager(self)
|
||||||
|
|
||||||
self.iactions['Fetch News'].init_scheduler(db)
|
self.iactions['Fetch News'].init_scheduler()
|
||||||
|
|
||||||
self.search_bar = SearchBar(self)
|
self.search_bar = SearchBar(self)
|
||||||
self.bars_manager = BarsManager(self.donate_action,
|
self.bars_manager = BarsManager(self.donate_action,
|
||||||
|
@ -232,7 +232,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
|
|||||||
_('&Donate to support calibre'), self)
|
_('&Donate to support calibre'), self)
|
||||||
for st in self.istores.values():
|
for st in self.istores.values():
|
||||||
st.do_genesis()
|
st.do_genesis()
|
||||||
MainWindowMixin.init_main_window_mixin(self, db)
|
MainWindowMixin.init_main_window_mixin(self)
|
||||||
|
|
||||||
# Jobs Button {{{
|
# Jobs Button {{{
|
||||||
self.job_manager = JobManager()
|
self.job_manager = JobManager()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user