diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index 6915d98a6e..b07be1904b 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -469,6 +469,13 @@ class EditMetadataAction(InterfaceAction): def apply_metadata_changes(self, id_map, title=_('Applying changed metadata'), msg=''): + ''' + Apply the metadata changes in id_map to the database synchronously + id_map must be a mapping of ids to Metadata objects. Set any fields you + do not want updated in the Metadata object to null. An easy way to do + that is to create a metadata object as Metadata(_('Unknown')) and then + only set the fields you want changed on this object. + ''' self.apply_id_map = list(id_map.iteritems()) self.apply_current_idx = 0 self.apply_failures = [] @@ -494,7 +501,7 @@ class EditMetadataAction(InterfaceAction): set_title = not mi.is_null('title') set_authors = not mi.is_null('authors') db.set_metadata(i, mi, commit=False, set_title=set_title, - set_authors=set_authors) + set_authors=set_authors, notify=False) self.applied_ids.append(i) except: import traceback diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 6a94e725a0..3702de45c5 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1756,7 +1756,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): return books_to_refresh def set_metadata(self, id, mi, ignore_errors=False, set_title=True, - set_authors=True, commit=True, force_changes=False): + set_authors=True, commit=True, force_changes=False, + notify=True): ''' Set metadata for the book `id` from the `Metadata` object `mi` @@ -1865,7 +1866,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): label=user_mi[key]['label'], commit=False) if commit: self.conn.commit() - self.notify('metadata', [id]) + if notify: + self.notify('metadata', [id]) def authors_sort_strings(self, id, index_is_id=False): '''