Make setting pubdate using search/replace more robust. Prevent setting "timestamp".

This commit is contained in:
Charles Haley 2012-08-05 14:48:02 +02:00
parent b3e190a26d
commit a3a599372a
2 changed files with 4 additions and 2 deletions

View File

@ -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':

View File

@ -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)