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')
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

View File

@ -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)