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 ...

This commit is contained in:
Charles Haley 2010-05-14 14:28:53 +01:00
parent 72fbd67c17
commit 96079a712c
2 changed files with 26 additions and 18 deletions

View File

@ -27,14 +27,17 @@ class USBMS(CLI, Device):
author = _('John Schember') author = _('John Schember')
supported_platforms = ['windows', 'osx', 'linux'] supported_platforms = ['windows', 'osx', 'linux']
booklist_class = BookList
book_class = Book
FORMATS = [] FORMATS = []
CAN_SET_METADATA = True CAN_SET_METADATA = True
METADATA_CACHE = 'metadata.calibre' METADATA_CACHE = 'metadata.calibre'
def initialize(self): def initialize(self):
Device.initialize(self) Device.initialize(self)
self.booklist_class = BookList # self.booklist_class = BookList
self.book_class = Book # self.book_class = Book
def get_device_information(self, end_session=True): def get_device_information(self, end_session=True):
self.report_progress(1.0, _('Get device information...')) 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...')) 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 = [] js = []
need_sync = False need_sync = False
try: try:
with open(os.path.join(prefix, name), 'rb') as f: with open(os.path.join(prefix, name), 'rb') as f:
js = json.load(f, encoding='utf-8') js = json.load(f, encoding='utf-8')
for item in js: 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(): for key in item.keys():
setattr(book, key, item[key]) setattr(book, key, item[key])
bl.append(book) bl.append(book)
@ -252,30 +256,34 @@ class USBMS(CLI, Device):
need_sync = True need_sync = True
return bl, need_sync return bl, need_sync
def update_metadata_item(self, item): @classmethod
def update_metadata_item(cls, item):
changed = False changed = False
size = os.stat(item.path).st_size size = os.stat(item.path).st_size
if size != item.size: if size != item.size:
changed = True changed = True
mi = self.metadata_from_path(item.path) mi = cls.metadata_from_path(item.path)
item.smart_update(mi) item.smart_update(mi)
item.size = size item.size = size
return item, changed return item, changed
def metadata_from_path(self, path): @classmethod
return self.metadata_from_formats([path]) 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.ebooks.metadata.meta import metadata_from_formats
from calibre.customize.ui import quick_metadata from calibre.customize.ui import quick_metadata
with quick_metadata: with quick_metadata:
return metadata_from_formats(fmts) 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 from calibre.ebooks.metadata import MetaInformation
if self.settings().read_metadata or self.MUST_READ_METADATA: if cls.settings().read_metadata or cls.MUST_READ_METADATA:
mi = self.metadata_from_path(os.path.join(prefix, path)) mi = cls.metadata_from_path(os.path.join(prefix, path))
else: else:
from calibre.ebooks.metadata.meta import metadata_from_filename from calibre.ebooks.metadata.meta import metadata_from_filename
mi = metadata_from_filename(os.path.basename(path), 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], mi = MetaInformation(os.path.splitext(os.path.basename(path))[0],
[_('Unknown')]) [_('Unknown')])
mi.size = os.stat(os.path.join(prefix, path)).st_size 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 return book

View File

@ -1022,11 +1022,11 @@ class DeviceGUI(object):
book_authors = authors_to_string(book.authors).lower() book_authors = authors_to_string(book.authors).lower()
book_authors = re.sub('(?u)\W|[_]', '', book_authors) book_authors = re.sub('(?u)\W|[_]', '', book_authors)
self.book_db_title_cache[i][book_title]['authors'].add(book_authors) self.book_db_title_cache[i][book_title]['authors'].add(book_authors)
id = getattr(book, 'application_id', None) db_id = getattr(book, 'application_id', None)
if id is None: if db_id is None:
id = book.db_id db_id = book.db_id
if id is not None: if db_id is not None:
self.book_db_title_cache[i][book_title]['db_ids'].add(id) self.book_db_title_cache[i][book_title]['db_ids'].add(db_id)
uuid = getattr(book, 'uuid', None) uuid = getattr(book, 'uuid', None)
if uuid is not None: if uuid is not None:
self.book_db_uuid_cache[i].add(uuid) self.book_db_uuid_cache[i].add(uuid)