mirror of
git://github.com/kovidgoyal/calibre.git
synced 2026-05-08 22:06:02 +02:00
Make metadata single use fewer transactions
This commit is contained in:
parent
d74636de2e
commit
62eca85316
2 changed files with 25 additions and 17 deletions
|
|
@ -41,7 +41,7 @@ def commit(self, book_id, notify=False):
|
|||
val = self.gui_val
|
||||
val = self.normalize_ui_val(val)
|
||||
if val != self.initial_val:
|
||||
self.db.set_custom(book_id, val, num=self.col_id, notify=notify)
|
||||
self.db._set_custom(book_id, val, num=self.col_id, notify=notify)
|
||||
|
||||
def normalize_db_val(self, val):
|
||||
return val
|
||||
|
|
@ -304,7 +304,7 @@ def commit(self, book_id, notify=False):
|
|||
num=self.col_id)
|
||||
else:
|
||||
s_index = None
|
||||
self.db.set_custom(book_id, val, extra=s_index,
|
||||
self.db._set_custom(book_id, val, extra=s_index,
|
||||
num=self.col_id, notify=notify)
|
||||
|
||||
widgets = {
|
||||
|
|
|
|||
|
|
@ -668,9 +668,9 @@ def fetch_metadata(self):
|
|||
self.tags.setText(', '.join(book.tags))
|
||||
if book.series is not None:
|
||||
if self.series.text() is None or self.series.text() == '':
|
||||
self.series.setText(book.series)
|
||||
if book.series_index is not None:
|
||||
self.series_index.setValue(book.series_index)
|
||||
self.series.setText(book.series)
|
||||
if book.series_index is not None:
|
||||
self.series_index.setValue(book.series_index)
|
||||
else:
|
||||
error_dialog(self, _('Cannot fetch metadata'),
|
||||
_('You must specify at least one of ISBN, Title, '
|
||||
|
|
@ -719,24 +719,31 @@ def accept(self):
|
|||
self.db.set_authors(self.id, string_to_authors(au), notify=False)
|
||||
aus = unicode(self.author_sort.text())
|
||||
if aus:
|
||||
self.db.set_author_sort(self.id, aus, notify=False)
|
||||
self.db.set_author_sort(self.id, aus, notify=False, commit=False)
|
||||
self.db.set_isbn(self.id,
|
||||
re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())), notify=False)
|
||||
self.db.set_rating(self.id, 2*self.rating.value(), notify=False)
|
||||
self.db.set_publisher(self.id, unicode(self.publisher.currentText()), notify=False)
|
||||
re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())),
|
||||
notify=False, commit=False)
|
||||
self.db.set_rating(self.id, 2*self.rating.value(), notify=False,
|
||||
commit=False)
|
||||
self.db.set_publisher(self.id, unicode(self.publisher.currentText()),
|
||||
notify=False, commit=False)
|
||||
self.db.set_tags(self.id, [x.strip() for x in
|
||||
unicode(self.tags.text()).split(',')], notify=False)
|
||||
unicode(self.tags.text()).split(',')], notify=False, commit=False)
|
||||
self.db.set_series(self.id,
|
||||
unicode(self.series.currentText()).strip(), notify=False)
|
||||
self.db.set_series_index(self.id, self.series_index.value(), notify=False)
|
||||
self.db.set_comment(self.id, unicode(self.comments.toPlainText()), notify=False)
|
||||
unicode(self.series.currentText()).strip(), notify=False,
|
||||
commit=False)
|
||||
self.db.set_series_index(self.id, self.series_index.value(),
|
||||
notify=False, commit=False)
|
||||
self.db.set_comment(self.id, unicode(self.comments.toPlainText()),
|
||||
notify=False, commit=False)
|
||||
d = self.pubdate.date()
|
||||
d = qt_to_dt(d)
|
||||
self.db.set_pubdate(self.id, d, notify=False)
|
||||
self.db.set_pubdate(self.id, d, notify=False, commit=False)
|
||||
d = self.date.date()
|
||||
d = qt_to_dt(d)
|
||||
if d.date() != self.orig_timestamp.date():
|
||||
self.db.set_timestamp(self.id, d, notify=False)
|
||||
self.db.set_timestamp(self.id, d, notify=False, commit=False)
|
||||
self.db.conn.commit()
|
||||
|
||||
if self.cover_changed:
|
||||
if self.cover_data is not None:
|
||||
|
|
@ -745,6 +752,7 @@ def accept(self):
|
|||
self.db.remove_cover(self.id)
|
||||
for w in getattr(self, 'custom_column_widgets', []):
|
||||
w.commit(self.id)
|
||||
self.db.conn.commit()
|
||||
except IOError, err:
|
||||
if err.errno == 13: # Permission denied
|
||||
fname = err.filename if err.filename else 'file'
|
||||
|
|
@ -769,9 +777,9 @@ def read_state(self):
|
|||
wg = dynamic.get('metasingle_window_geometry', None)
|
||||
ss = dynamic.get('metasingle_splitter_state', None)
|
||||
if wg is not None:
|
||||
self.restoreGeometry(wg)
|
||||
self.restoreGeometry(wg)
|
||||
if ss is not None:
|
||||
self.splitter.restoreState(ss)
|
||||
self.splitter.restoreState(ss)
|
||||
|
||||
def save_state(self):
|
||||
dynamic.set('metasingle_window_geometry', bytes(self.saveGeometry()))
|
||||
|
|
|
|||
Loading…
Reference in a new issue