From e87281a8d28ef5b8c903e622e6b3a566ebf47b19 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sun, 1 Dec 2013 12:40:16 +0100 Subject: [PATCH] Fix two problems in bulk search/replace: 1) S/R of datetime fields generated an exception 2) Using {template} as a source generated an error until the destination field was filled in. --- src/calibre/gui2/dialogs/metadata_bulk.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 37e71a6340..83d83fa27f 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -585,6 +585,8 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): fm = self.db.metadata_for_field(field) if field == 'sort': val = mi.get('title_sort', None) + elif fm['datatype'] == 'datetime': + val = mi.format_field(field)[1] else: val = mi.get(field, None) if isinstance(val, (int, float, bool)): @@ -731,8 +733,10 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): return '' dest = self.s_r_df_itemdata(None) if dest == '': - if self.db.metadata_for_field(src)['datatype'] == 'composite': - raise Exception(_('You must specify a destination when source is a composite field')) + if (src == '{template}' or + self.db.metadata_for_field(src)['datatype'] == 'composite'): + raise Exception(_('You must specify a destination when source is ' + 'a composite field or a template')) dest = src dest_mode = self.replace_mode.currentIndex()