From f280cc956fa7b234212ed995fd7497b29b9ac5ea Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 22 Sep 2010 20:56:08 +0100 Subject: [PATCH 1/2] Fix template bugs introduced by using + instead of '%s' --- src/calibre/ebooks/metadata/book/base.py | 4 ++-- src/calibre/library/save_to_disk.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 39b9b34174..4e78bf5a48 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -43,9 +43,9 @@ class SafeFormat(string.Formatter): ign, v = mi.format_field(key, series_with_index=False) if v is None: return '' - if v is '': + if v == '': return '' - return prefix + v + suffix + return prefix + unicode(v) + suffix except: return key diff --git a/src/calibre/library/save_to_disk.py b/src/calibre/library/save_to_disk.py index 19727deb17..90e5413389 100644 --- a/src/calibre/library/save_to_disk.py +++ b/src/calibre/library/save_to_disk.py @@ -101,7 +101,8 @@ def preprocess_template(template): template = template.decode(preferred_encoding, 'replace') return template -template_value_re = re.compile(r'^([^\|]*(?=\|))(?:\|?)([^\|]*)(?:\|?)((?<=\|).*?)$') +template_value_re = re.compile(r'^([^\|]*(?=\|))(?:\|?)([^\|]*)(?:\|?)((?<=\|).*?)$', + flags= re.UNICODE) def explode_string_template_value(key): try: @@ -120,7 +121,7 @@ class SafeFormat(string.Formatter): try: prefix, key, suffix = explode_string_template_value(key) if kwargs[key]: - return prefix + kwargs[key] + suffix + return prefix + unicode(kwargs[key]) + suffix return '' except: return '' From 8a9ae38ebff2cc641d2d661da2d6577db7f0acd0 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Wed, 22 Sep 2010 21:00:25 +0100 Subject: [PATCH 2/2] Change to fix to make the value unicode in format_field_extended. This is a more general fix. Note that the orig_field has not been changed. --- src/calibre/ebooks/metadata/book/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index 4e78bf5a48..a2b2790ed9 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -45,7 +45,7 @@ class SafeFormat(string.Formatter): return '' if v == '': return '' - return prefix + unicode(v) + suffix + return prefix + v + suffix except: return key @@ -444,7 +444,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, res, orig_res, cmeta) + return (name, unicode(res), orig_res, cmeta) if key in field_metadata and field_metadata[key]['kind'] == 'field': res = self.get(key, None) @@ -462,7 +462,7 @@ class Metadata(object): res = res + ' [%s]'%self.format_series_index() elif datatype == 'datetime': res = format_date(res, fmeta['display'].get('date_format','dd MMM yyyy')) - return (name, res, orig_res, fmeta) + return (name, unicode(res), orig_res, fmeta) return (None, None, None, None)