From 2a654f3062401e864cdd357850033ad05937f34e Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 14 Sep 2010 07:41:06 +0100 Subject: [PATCH] Fix stupidity in collectiions_management where I broke tag splitting --- src/calibre/devices/usbms/books.py | 4 +++- src/calibre/ebooks/metadata/book/base.py | 13 ++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index cf60f1311c..d25787fc89 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -141,7 +141,9 @@ class CollectionsBookList(BookList): cust_field_meta = book.get_all_user_metadata(make_copy=False) for attr in attrs: attr = attr.strip() - ign, val = book.format_field(attr, ignore_series_index=True) + ign, val = book.format_field(attr, + ignore_series_index=True, + return_multiples_as_list=True) if not val: continue if isbytestring(val): val = val.decode(preferred_encoding, 'replace') diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 6e0351353f..7405f20a7c 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -343,7 +343,8 @@ class Metadata(object): def format_rating(self): return unicode(self.rating) - def format_field(self, key, ignore_series_index=False): + def format_field(self, key, ignore_series_index=False, + return_multiples_as_list=False): from calibre.ebooks.metadata import authors_to_string ''' returns the tuple (field_name, formatted_value) @@ -356,7 +357,8 @@ class Metadata(object): name = unicode(cmeta['name']) datatype = cmeta['datatype'] if datatype == 'text' and cmeta['is_multiple']: - res = u', '.join(res) + if not return_multiples_as_list: + res = u', '.join(res) elif datatype == 'series': if not ignore_series_index: res = res + \ @@ -365,7 +367,7 @@ class Metadata(object): res = format_date(res, cmeta['display'].get('date_format','dd MMM yyyy')) elif datatype == 'bool': res = _('Yes') if res else _('No') - return (name, unicode(res)) + return (name, res) if key in field_metadata and field_metadata[key]['kind'] == 'field': res = self.get(key, None) @@ -377,13 +379,14 @@ class Metadata(object): if key == 'authors': res = authors_to_string(res) elif datatype == 'text' and fmeta['is_multiple']: - res = u', '.join(res) + if not return_multiples_as_list: + res = u', '.join(res) elif datatype == 'series': if not ignore_series_index: res = res + ' [%s]'%self.format_series_index() elif datatype == 'datetime': res = format_date(res, fmeta['display'].get('date_format','dd MMM yyyy')) - return (name, unicode(res)) + return (name, res) return (None, None)