From a3a599372ae909d23de2d7423b66feec0c4a2759 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 5 Aug 2012 14:48:02 +0200 Subject: [PATCH] Make setting pubdate using search/replace more robust. Prevent setting "timestamp". --- src/calibre/gui2/dialogs/metadata_bulk.py | 2 +- src/calibre/library/database2.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 2a18c27a87..5c90e5dddd 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -414,7 +414,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): and fm[f].get('search_terms', None) and f not in ['formats', 'ondevice']) or (fm[f]['datatype'] in ['int', 'float', 'bool', 'datetime'] and - f not in ['id'])): + f not in ['id', 'timestamp'])): self.all_fields.append(f) self.writable_fields.append(f) if fm[f]['datatype'] == 'composite': diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 8a9152eb48..03f7034793 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -31,7 +31,7 @@ from calibre.ptempfile import (PersistentTemporaryFile, from calibre.customize.ui import run_plugins_on_import from calibre import isbytestring from calibre.utils.filenames import ascii_filename -from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp +from calibre.utils.date import utcnow, now as nowf, utcfromtimestamp, parse_date from calibre.utils.config import prefs, tweaks, from_json, to_json from calibre.utils.icu import sort_key, strcmp, lower from calibre.utils.search_query_parser import saved_searches, set_saved_searches @@ -2479,6 +2479,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): def set_pubdate(self, id, dt, notify=True, commit=True): if dt: + if isinstance(dt, (str, unicode, bytes)): + dt = parse_date(dt) self.conn.execute('UPDATE books SET pubdate=? WHERE id=?', (dt, id)) self.data.set(id, self.FIELD_MAP['pubdate'], dt, row_is_id=True) self.dirtied([id], commit=False)