From d68718166b9846919cec33b706a32411513eb338 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 2 Nov 2013 12:33:39 +0100 Subject: [PATCH 1/2] Fix field_metadata.is_series_index that apparently never worked. --- src/calibre/library/field_metadata.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index a76d78da0b..845e15eed7 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -504,9 +504,12 @@ class FieldMetadata(dict): return [k for k in self._tb_cats.iterkeys() if self.is_ignorable_field(k)] def is_series_index(self, key): - m = self[key] - return (m['datatype'] == 'float' and key.endswith('_index') and - key[:-6] in self) + try: + m = self._tb_cats[key] + return (m['datatype'] == 'float' and key.endswith('_index') and + key[:-6] in self) + except: + return False def key_to_label(self, key): if 'label' not in self._tb_cats[key]: From 05b45937fae9089c2ff00c9d514637380a302e3a Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 2 Nov 2013 12:35:31 +0100 Subject: [PATCH 2/2] Bug #1247348. This change might change behavior of something. Before, any int or float that was None or zero returned an empty string. Now only None values do that. The previous behavior did not work properly with zero values in templates, including series indices. --- src/calibre/ebooks/metadata/book/formatter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/formatter.py b/src/calibre/ebooks/metadata/book/formatter.py index 7adbe81016..8284b94714 100644 --- a/src/calibre/ebooks/metadata/book/formatter.py +++ b/src/calibre/ebooks/metadata/book/formatter.py @@ -33,8 +33,7 @@ class SafeFormat(TemplateFormatter): b = self.book.get_user_metadata(key, False) except: b = None - if b and ((b['datatype'] == 'int' and self.book.get(key, 0) == 0) or - (b['datatype'] == 'float' and self.book.get(key, 0.0) == 0.0)): + if (b and b['datatype'] in ['int', 'float'] and self.book.get(key, None) == None): v = '' else: v = self.book.format_field(key, series_with_index=False)[1]