diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 91c608c7af..4c71ac2dd7 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -755,6 +755,7 @@ class Main(MainWindow, Ui_MainWindow): def sync_news(self): if self.device_connected: ids = list(dynamic.get('news_to_be_synced', set([]))) + ids = [id for id in ids if self.library_view.model().db.has_id(id)] files = [self.library_view.model().db.format(id, prefs['output_format'], index_is_id=True, as_file=True) for id in ids] files = [f for f in files if f is not None] metadata = self.library_view.model().get_metadata(ids, rows_are_ids=True) @@ -889,6 +890,7 @@ class Main(MainWindow, Ui_MainWindow): self.job_exception(job) return id = self.library_view.model().add_news(pt.name, recipe) + self.library_view.model().reset() sync = dynamic.get('news_to_be_synced', set([])) sync.add(id) dynamic.set('news_to_be_synced', sync) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 96293a2270..2328ca7bad 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -232,6 +232,9 @@ class ResultCache(SearchQueryParser): def row(self, id): return self.index(id) + def has_id(self, id): + return self._data[id] is not None + def refresh_ids(self, conn, ids): for id in ids: self._data[id] = conn.get('SELECT * from meta WHERE id=?', (id,))[0] @@ -371,6 +374,7 @@ class LibraryDatabase2(LibraryDatabase): self.index = self.data.index self.refresh_ids = functools.partial(self.data.refresh_ids, self.conn) self.row = self.data.row + self.has_id = self.data.has_id self.refresh() @@ -589,7 +593,7 @@ class LibraryDatabase2(LibraryDatabase): data = data.read() p.loadFromData(data) p.save(path) - + def all_formats(self): formats = self.conn.get('SELECT format from data') if not formats: