From 179c28e32850c5be50d5853394f8b18b063d0aae Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jul 2013 11:45:40 +0530 Subject: [PATCH] Fix adding of books in newdb --- src/calibre/db/legacy.py | 14 +++++++++++--- src/calibre/db/view.py | 5 +++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/calibre/db/legacy.py b/src/calibre/db/legacy.py index b2ac69c13a..f85340aacd 100644 --- a/src/calibre/db/legacy.py +++ b/src/calibre/db/legacy.py @@ -200,7 +200,9 @@ class LibraryDatabase(object): # Adding books {{{ def create_book_entry(self, mi, cover=None, add_duplicates=True, force_id=None): - return self.new_api.create_book_entry(mi, cover=cover, add_duplicates=add_duplicates, force_id=force_id) + ret = self.new_api.create_book_entry(mi, cover=cover, add_duplicates=add_duplicates, force_id=force_id) + self.data.books_added((ret,)) + return ret def add_books(self, paths, formats, metadata, add_duplicates=True, return_ids=False): books = [(mi, {fmt:path}) for mi, path, fmt in zip(metadata, paths, formats)] @@ -214,6 +216,7 @@ class LibraryDatabase(object): paths.append(path) duplicates = (paths, formats, metadata) ids = book_ids if return_ids else len(book_ids) + self.data.books_added(book_ids) return duplicates or None, ids def import_book(self, mi, formats, notify=True, import_hooks=True, apply_import_tags=True, preserve_uuid=False): @@ -225,6 +228,7 @@ class LibraryDatabase(object): format_map[ext] = path book_ids, duplicates = self.new_api.add_books( [(mi, format_map)], add_duplicates=True, apply_import_tags=apply_import_tags, preserve_uuid=preserve_uuid, dbapi=self, run_hooks=import_hooks) + self.data.books_added(book_ids) if notify: self.notify('add', book_ids) return book_ids[0] @@ -244,10 +248,14 @@ class LibraryDatabase(object): return recursive_import(self, root, single_book_per_directory=single_book_per_directory, callback=callback, added_ids=added_ids) def add_catalog(self, path, title): - return add_catalog(self.new_api, path, title) + book_id = add_catalog(self.new_api, path, title) + self.data.books_added((book_id,)) + return book_id def add_news(self, path, arg): - return add_news(self.new_api, path, arg) + book_id = add_news(self.new_api, path, arg) + self.data.books_added((book_id,)) + return book_id def add_format(self, index, fmt, stream, index_is_id=False, path=None, notify=True, replace=True, copy_function=None): ''' path and copy_function are ignored by the new API ''' diff --git a/src/calibre/db/view.py b/src/calibre/db/view.py index 8c99cf41cf..48d53e06a8 100644 --- a/src/calibre/db/view.py +++ b/src/calibre/db/view.py @@ -353,3 +353,8 @@ class View(object): for book_id in ids: self.remove(book_id) + def books_added(self, ids): + ids = tuple(ids) + self._map = ids + self._map + self._map_filtered = ids + self._map_filtered +