From 536eb116a57c4292807c8a01dca349e65611a9f5 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Mon, 6 Sep 2010 07:41:53 +0100 Subject: [PATCH 1/2] Fix bug #6718 --- src/calibre/library/database2.py | 3 +-- src/calibre/library/field_metadata.py | 12 +----------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 4b6fb2f7f2..3b7efd500d 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -144,6 +144,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): self.initialize_dynamic() def initialize_dynamic(self): + self.field_metadata = FieldMetadata() #Ensure we start with a clean copy self.prefs = DBPrefs(self) defs = self.prefs.defaults defs['gui_restriction'] = defs['cs_restriction'] = '' @@ -2151,8 +2152,6 @@ books_series_link feeds os.remove(self.dbpath) shutil.copyfile(dest, self.dbpath) self.connect() - self.field_metadata.remove_dynamic_categories() - self.field_metadata.remove_custom_fields() self.initialize_dynamic() self.refresh() if os.path.exists(dest): diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index e28b6d422a..09dd024b66 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -306,7 +306,7 @@ class FieldMetadata(dict): self._tb_cats[k]['label'] = k self._tb_cats[k]['display'] = {} self._tb_cats[k]['is_editable'] = True - self._add_search_terms_to_map(k, self._tb_cats[k]['search_terms']) + self._add_search_terms_to_map(k, v['search_terms']) self.custom_field_prefix = '#' self.get = self._tb_cats.get @@ -408,16 +408,6 @@ class FieldMetadata(dict): self._add_search_terms_to_map(key, [key]) self.custom_label_to_key_map[label+'_index'] = key - def remove_custom_fields(self): - for key in self.get_custom_fields(): - del self._tb_cats[key] - - def remove_dynamic_categories(self): - 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] - def cc_series_index_column_for(self, key): return self._tb_cats[key]['rec_index'] + 1 From 8a027ac60cadea17efc3b8eeb55bbba24f920e65 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Mon, 6 Sep 2010 14:18:00 +0100 Subject: [PATCH 2/2] Fix problem where db.set_author forced a recalculation of author_sort whenever editing metadata of a book with a unique author (only book with that author). The problem arose because the author was deleted from the DB then recreated, causing the trigger to be fired. --- src/calibre/gui2/dialogs/metadata_single.py | 1 + src/calibre/library/database2.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 1393a50738..82b6ac8cbf 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -760,6 +760,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): _('Could not open %s. Is it being used by another' ' program?')%fname, show=True) raise + self.db.clean() self.save_state() QDialog.accept(self) if callable(self.accepted_callback): diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 3b7efd500d..93c42ea342 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1126,7 +1126,6 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): if not authors: authors = [_('Unknown')] self.conn.execute('DELETE FROM books_authors_link WHERE book=?',(id,)) - self.conn.execute('DELETE FROM authors WHERE (SELECT COUNT(id) FROM books_authors_link WHERE author=authors.id) < 1') for a in authors: if not a: continue