newdb: Fix displaying the languages column

Displaying the languages column for a book with no languages
was causing an error.
This commit is contained in:
Kovid Goyal 2013-07-30 17:30:27 +05:30
parent 00a6f4593c
commit 1d9a3dcb5f
2 changed files with 4 additions and 1 deletions

View File

@ -336,7 +336,7 @@ class Cache(object):
except KeyError:
return default_value
if field.is_multiple:
default_value = {} if name == 'identifiers' else ()
default_value = field.default_value
try:
return field.for_book(book_id, default_value=default_value)
except (KeyError, IndexError):
@ -347,6 +347,8 @@ class Cache(object):
' Same as field_for, except that it avoids the extra lookup to get the field object '
if field_obj.is_composite:
return field_obj.get_value_with_cache(book_id, self._get_proxy_metadata)
if field_obj.is_multiple:
default_value = field_obj.default_value
try:
return field_obj.for_book(book_id, default_value=default_value)
except (KeyError, IndexError):

View File

@ -48,6 +48,7 @@ class Field(object):
self._sort_key = lambda x:sort_key(calibre_langcode_to_name(x))
self.is_multiple = (bool(self.metadata['is_multiple']) or self.name ==
'formats')
self.default_value = {} if name == 'identifiers' else () if self.is_multiple else None
self.category_formatter = type(u'')
if dt == 'rating':
self.category_formatter = lambda x:'\u2605'*int(x/2)