From ab4ad1be85e4a89ec41e5f4dbd2f4dcd143927e4 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 25 Jan 2011 22:17:28 +0000 Subject: [PATCH 1/3] Fix adding user category search terms --- src/calibre/library/field_metadata.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index 78fe899fa8..cfd95b2e3c 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -7,6 +7,7 @@ import copy from calibre.utils.ordered_dict import OrderedDict from calibre.utils.config import tweaks +from calibre.utils.icu import lower class TagsIcons(dict): ''' @@ -471,7 +472,8 @@ class FieldMetadata(dict): self.custom_label_to_key_map[label+'_index'] = key def remove_dynamic_categories(self): - for key in list(self._tb_cats.keys()): + keys = list(self._tb_cats.keys())[:] + for key in keys: val = self._tb_cats[key] if val['is_category'] and val['kind'] in ('user', 'search'): del self._tb_cats[key] @@ -482,6 +484,7 @@ class FieldMetadata(dict): return self._tb_cats[key]['rec_index'] + 1 def add_user_category(self, label, name): + label = lower(label) if label in self._tb_cats: raise ValueError('Duplicate user field [%s]'%(label)) self._tb_cats[label] = {'table':None, 'column':None, From 0b0662c63232a11157eda63497e59c2655674669 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 25 Jan 2011 22:20:11 +0000 Subject: [PATCH 2/3] Integrate fix for multiple search terms --- src/calibre/library/field_metadata.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index 902e43891c..c8706f2137 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -472,15 +472,14 @@ class FieldMetadata(dict): self.custom_label_to_key_map[label+'_index'] = key def remove_dynamic_categories(self): - keys = list(self._tb_cats.keys())[:] - for key in keys: + for key in list(self._tb_cats.keys()): val = self._tb_cats[key] if val['is_category'] and val['kind'] in ('user', 'search'): del self._tb_cats[key] if key in self._search_term_map: del self._search_term_map[key] - if key.lower() in self._search_term_map: - del self._search_term_map[key.lower()] + if key in self._search_term_map: + del self._search_term_map[key] def cc_series_index_column_for(self, key): return self._tb_cats[key]['rec_index'] + 1 From ede45bbc7865b903eb491a4246f4fdc0acd79e5c Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 25 Jan 2011 22:40:38 +0000 Subject: [PATCH 3/3] Another 'right' fix for the multiple user category problem --- src/calibre/library/field_metadata.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index c8706f2137..474f70d500 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -485,7 +485,6 @@ class FieldMetadata(dict): return self._tb_cats[key]['rec_index'] + 1 def add_user_category(self, label, name): - label = lower(label) if label in self._tb_cats: raise ValueError('Duplicate user field [%s]'%(label)) self._tb_cats[label] = {'table':None, 'column':None, @@ -525,7 +524,6 @@ class FieldMetadata(dict): def _add_search_terms_to_map(self, key, terms): if terms is not None: for t in terms: - t = t.lower() if t in self._search_term_map: raise ValueError('Attempt to add duplicate search term "%s"'%t) self._search_term_map[t] = key