From 1f630c84b502ae137ffc8783139f151a03b60cc0 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Jun 2011 17:35:08 +0100 Subject: [PATCH 1/2] Redo ismultiple fixes lost because of an editing conflict. --- src/calibre/gui2/preferences/coloring.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/preferences/coloring.py b/src/calibre/gui2/preferences/coloring.py index 8a13ead516..49c7c2898c 100644 --- a/src/calibre/gui2/preferences/coloring.py +++ b/src/calibre/gui2/preferences/coloring.py @@ -209,7 +209,7 @@ class ConditionEditor(QWidget): # {{{ tt = _('Enter a regular expression') elif m.get('is_multiple', False): tt += '\n' + _('You can match multiple values by separating' - ' them with %s')%m['is_multiple'] + ' them with %s')%m['is_multiple']['ui_to_list'] self.value_box.setToolTip(tt) if action in ('is set', 'is not set', 'is true', 'is false', 'is undefined'): From 4e34b03c2eaa35c96f9f6a799ae1d26ec25058bd Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 4 Jun 2011 18:11:25 +0100 Subject: [PATCH 2/2] Add is_multiple2 to the OPF --- src/calibre/ebooks/metadata/opf2.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py index b83e0f5177..82e5127b59 100644 --- a/src/calibre/ebooks/metadata/opf2.py +++ b/src/calibre/ebooks/metadata/opf2.py @@ -460,6 +460,7 @@ def serialize_user_metadata(metadata_elem, all_user_metadata, tail='\n'+(' '*8)) if fm.get('is_multiple'): # migrate is_multiple back to a character fm = copy.copy(fm) + fm['is_multiple2'] = fm.get('is_multiple', {}) dt = fm.get('datatype', None) if dt == 'composite': fm['is_multiple'] = ',' @@ -593,17 +594,25 @@ class OPF(object): # {{{ fm = elem.get('content') try: fm = json.loads(fm, object_hook=from_json) - im = fm.get('is_multiple', None) - if im and not isinstance(im, dict): - # Must migrate the is_multiple from char to dict - dt = fm.get('datatype', None) - if dt == 'composite': - im = {'cache_to_list': ',', 'ui_to_list': ',', 'list_to_ui': ', '} - elif fm.get('display', {}).get('is_names', False): - im = {'cache_to_list': '|', 'ui_to_list': '&', 'list_to_ui': ', '} - else: - im = {'cache_to_list': '|', 'ui_to_list': ',', 'list_to_ui': ', '} + im = fm.get('is_multiple2', None) + if im: fm['is_multiple'] = im + del fm['is_multiple2'] + else: + # Must migrate the is_multiple from char to dict + im = fm.get('is_multiple', None) + if im: + dt = fm.get('datatype', None) + if dt == 'composite': + im = {'cache_to_list': ',', 'ui_to_list': ',', + 'list_to_ui': ', '} + elif fm.get('display', {}).get('is_names', False): + im = {'cache_to_list': '|', 'ui_to_list': '&', + 'list_to_ui': ', '} + else: + im = {'cache_to_list': '|', 'ui_to_list': ',', + 'list_to_ui': ', '} + fm['is_multiple'] = im temp.set_user_metadata(name, fm) except: prints('Failed to read user metadata:', name)