From 96079a712ccaf9369f5aa766c432f6f2adaefad9 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 14 May 2010 14:28:53 +0100 Subject: [PATCH] Put @classmethods back in. I don't understand why the decoration is there, so I hesitate to take it out. Far as I can see, there is no reason for it, but ... --- src/calibre/devices/usbms/driver.py | 34 ++++++++++++++++++----------- src/calibre/gui2/device.py | 10 ++++----- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py index 361f7ea1bf..1fdf3bdf84 100644 --- a/src/calibre/devices/usbms/driver.py +++ b/src/calibre/devices/usbms/driver.py @@ -27,14 +27,17 @@ class USBMS(CLI, Device): author = _('John Schember') supported_platforms = ['windows', 'osx', 'linux'] + booklist_class = BookList + book_class = Book + FORMATS = [] CAN_SET_METADATA = True METADATA_CACHE = 'metadata.calibre' def initialize(self): Device.initialize(self) - self.booklist_class = BookList - self.book_class = Book +# self.booklist_class = BookList +# self.book_class = Book def get_device_information(self, end_session=True): self.report_progress(1.0, _('Get device information...')) @@ -234,14 +237,15 @@ class USBMS(CLI, Device): self.report_progress(1.0, _('Sending metadata to device...')) - def parse_metadata_cache(self, prefix, name, bl): + @classmethod + def parse_metadata_cache(cls, prefix, name, bl): js = [] need_sync = False try: with open(os.path.join(prefix, name), 'rb') as f: js = json.load(f, encoding='utf-8') for item in js: - book = self.book_class(prefix, item.get('lpath', None)) + book = cls.book_class(prefix, item.get('lpath', None)) for key in item.keys(): setattr(book, key, item[key]) bl.append(book) @@ -252,30 +256,34 @@ class USBMS(CLI, Device): need_sync = True return bl, need_sync - def update_metadata_item(self, item): + @classmethod + def update_metadata_item(cls, item): changed = False size = os.stat(item.path).st_size if size != item.size: changed = True - mi = self.metadata_from_path(item.path) + mi = cls.metadata_from_path(item.path) item.smart_update(mi) item.size = size return item, changed - def metadata_from_path(self, path): - return self.metadata_from_formats([path]) + @classmethod + def metadata_from_path(cls, path): + return cls.metadata_from_formats([path]) - def metadata_from_formats(self, fmts): + @classmethod + def metadata_from_formats(cls, fmts): from calibre.ebooks.metadata.meta import metadata_from_formats from calibre.customize.ui import quick_metadata with quick_metadata: return metadata_from_formats(fmts) - def book_from_path(self, prefix, path): + @classmethod + def book_from_path(cls, prefix, path): from calibre.ebooks.metadata import MetaInformation - if self.settings().read_metadata or self.MUST_READ_METADATA: - mi = self.metadata_from_path(os.path.join(prefix, path)) + if cls.settings().read_metadata or cls.MUST_READ_METADATA: + mi = cls.metadata_from_path(os.path.join(prefix, path)) else: from calibre.ebooks.metadata.meta import metadata_from_filename mi = metadata_from_filename(os.path.basename(path), @@ -285,5 +293,5 @@ class USBMS(CLI, Device): mi = MetaInformation(os.path.splitext(os.path.basename(path))[0], [_('Unknown')]) mi.size = os.stat(os.path.join(prefix, path)).st_size - book = self.book_class(prefix, path, other=mi) + book = cls.book_class(prefix, path, other=mi) return book diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index a9f69bbca5..af314c5468 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -1022,11 +1022,11 @@ class DeviceGUI(object): book_authors = authors_to_string(book.authors).lower() book_authors = re.sub('(?u)\W|[_]', '', book_authors) self.book_db_title_cache[i][book_title]['authors'].add(book_authors) - id = getattr(book, 'application_id', None) - if id is None: - id = book.db_id - if id is not None: - self.book_db_title_cache[i][book_title]['db_ids'].add(id) + db_id = getattr(book, 'application_id', None) + if db_id is None: + db_id = book.db_id + if db_id is not None: + self.book_db_title_cache[i][book_title]['db_ids'].add(db_id) uuid = getattr(book, 'uuid', None) if uuid is not None: self.book_db_uuid_cache[i].add(uuid)