From effa69add29c25d54e40d7918ba70ec08cc80b09 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 5 Oct 2010 06:23:39 +0100 Subject: [PATCH] Fix problem where the _new_book indication was being lost --- src/calibre/devices/kobo/driver.py | 5 +++-- src/calibre/devices/prs505/sony_cache.py | 1 + src/calibre/devices/usbms/books.py | 10 +++++++--- src/calibre/devices/usbms/driver.py | 5 +++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py index b8516aab4f..6fd86110ce 100644 --- a/src/calibre/devices/kobo/driver.py +++ b/src/calibre/devices/kobo/driver.py @@ -325,8 +325,9 @@ class KOBO(USBMS): book = Book(prefix, lpath, '', '', '', '', '', '', other=info) if book.size is None: book.size = os.stat(self.normalize_path(path)).st_size - book._new_book = True # Must be before add_book - booklists[blist].add_book(book, replace_metadata=True) + b = booklists[blist].add_book(book, replace_metadata=True) + if b: + b._new_book = True self.report_progress(1.0, _('Adding books to device metadata listing...')) def contentid_from_path(self, path, ContentType): diff --git a/src/calibre/devices/prs505/sony_cache.py b/src/calibre/devices/prs505/sony_cache.py index 38d2001709..ce24dcd03f 100644 --- a/src/calibre/devices/prs505/sony_cache.py +++ b/src/calibre/devices/prs505/sony_cache.py @@ -362,6 +362,7 @@ class XMLCache(object): if plugboard is not None: newmi = book.deepcopy_metadata() newmi.template_to_attribute(book, plugboard) + newmi.set('_new_book', getattr(book, '_new_book', False)) else: newmi = book (gtz_count, ltz_count, use_tz_var) = \ diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index 915d937379..a267d18584 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -71,17 +71,21 @@ class BookList(_BookList): return False def add_book(self, book, replace_metadata): + ''' + Add the book to the booklist, if needed. Return None if the book is + already there and not updated, otherwise return the book. + ''' try: b = self.index(book) except (ValueError, IndexError): b = None if b is None: self.append(book) - return True + return book if replace_metadata: self[b].smart_update(book, replace_metadata=True) - return True - return False + return self[b] + return None def remove_book(self, book): self.remove(book) diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py index b4fe5d25fc..a83a8eb0ea 100644 --- a/src/calibre/devices/usbms/driver.py +++ b/src/calibre/devices/usbms/driver.py @@ -242,8 +242,9 @@ class USBMS(CLI, Device): book = self.book_class(prefix, lpath, other=info) if book.size is None: book.size = os.stat(self.normalize_path(path)).st_size - book._new_book = True # Must be before add_book - booklists[blist].add_book(book, replace_metadata=True) + b = booklists[blist].add_book(book, replace_metadata=True) + if b: + b._new_book = True self.report_progress(1.0, _('Adding books to device metadata listing...')) debug_print('USBMS: finished adding metadata')