From 529756238340e0dd66c3be0cfc1f5f7a8a178cfa Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Fri, 24 Sep 2010 12:57:49 +0100 Subject: [PATCH] Refactor code to clean interfaces and remove overly complex loop in bulk edit --- src/calibre/gui2/dialogs/metadata_bulk.py | 3 +-- src/calibre/library/database2.py | 8 ++++---- src/calibre/library/field_metadata.py | 22 +++++++++++----------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 1e3576e333..b14390e001 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -167,8 +167,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog): self.tag_editor_button.clicked.connect(self.tag_editor) self.autonumber_series.stateChanged[int].connect(self.auto_number_changed) - if len([k for k in db.custom_field_metadata().values() - if k['datatype'] != 'composite']) == 0: + if len(db.custom_field_keys(include_composites=False)) == 0: self.central_widget.removeTab(1) else: self.create_custom_column_editors() diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index c7c4926b14..22175d3910 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -539,8 +539,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): def standard_field_keys(self): return self.field_metadata.standard_field_keys() - def custom_field_keys(self): - return self.field_metadata.custom_field_keys() + def custom_field_keys(self, include_composites=True): + return self.field_metadata.custom_field_keys(include_composites) def all_field_keys(self): return self.field_metadata.all_field_keys() @@ -554,8 +554,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): def search_term_to_field_key(self, term): return self.field_metadata.search_term_to_key(term) - def custom_field_metadata(self): - return self.field_metadata.custom_field_metadata() + def custom_field_metadata(self, include_composites=True): + return self.field_metadata.custom_field_metadata(include_composites) def all_metadata(self): return self.field_metadata.all_metadata() diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index d608dca49d..37393d0d2c 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -358,10 +358,14 @@ class FieldMetadata(dict): if self._tb_cats[k]['kind']=='field' and not self._tb_cats[k]['is_custom']] - def custom_field_keys(self): - return [k for k in self._tb_cats.keys() - if self._tb_cats[k]['kind']=='field' and - self._tb_cats[k]['is_custom']] + def custom_field_keys(self, include_composites=True): + res = [] + for k in self._tb_cats.keys(): + fm = self._tb_cats[k] + if fm['kind']=='field' and fm['is_custom'] and \ + (fm['datatype'] != 'composite' or include_composites): + res.append(k) + return res def all_field_keys(self): return [k for k in self._tb_cats.keys() if self._tb_cats[k]['kind']=='field'] @@ -402,20 +406,16 @@ class FieldMetadata(dict): return self.custom_label_to_key_map[label] raise ValueError('Unknown key [%s]'%(label)) - def get_custom_fields(self): - return [l for l in self._tb_cats if self._tb_cats[l]['is_custom']] - def all_metadata(self): l = {} for k in self._tb_cats: l[k] = self._tb_cats[k] return l - def custom_field_metadata(self): + def custom_field_metadata(self, include_composites=True): l = {} - for k in self._tb_cats: - if self._tb_cats[k]['is_custom']: - l[k] = self._tb_cats[k] + for k in self.custom_field_keys(include_composites): + l[k] = self._tb_cats[k] return l def add_custom_field(self, label, table, column, datatype, colnum, name,