diff --git a/src/calibre/gui2/actions/edit_metadata.py b/src/calibre/gui2/actions/edit_metadata.py index e5a9bfbc7d..84b1d367c6 100644 --- a/src/calibre/gui2/actions/edit_metadata.py +++ b/src/calibre/gui2/actions/edit_metadata.py @@ -399,8 +399,7 @@ class EditMetadataAction(InterfaceAction): if safe_merge: if not confirm('
'+_(
'Book formats and metadata from the selected books '
- 'will be added to the first selected book (%s). '
- 'ISBN will not be merged.
'
+ 'will be added to the first selected book (%s).
'
'The second and subsequently selected books will not '
'be deleted or changed.
'
'Please confirm you want to proceed.')%title
@@ -413,7 +412,7 @@ class EditMetadataAction(InterfaceAction):
'Book formats from the selected books will be merged '
'into the first selected book (%s). '
'Metadata in the first selected book will not be changed. '
- 'Author, Title, ISBN and all other metadata will not be merged.
'
+ 'Author, Title and all other metadata will not be merged.
'
'After merger the second and subsequently '
'selected books, with any metadata they have will be deleted.
'
'All book formats of the first selected book will be kept '
@@ -427,8 +426,7 @@ class EditMetadataAction(InterfaceAction):
else:
if not confirm('
'+_(
'Book formats and metadata from the selected books will be merged '
- 'into the first selected book (%s). '
- 'ISBN will not be merged.
'
+ 'into the first selected book (%s).
'
'After merger the second and '
'subsequently selected books will be deleted.
'
'All book formats of the first selected book will be kept '
@@ -490,11 +488,13 @@ class EditMetadataAction(InterfaceAction):
def merge_metadata(self, dest_id, src_ids):
db = self.gui.library_view.model().db
dest_mi = db.get_metadata(dest_id, index_is_id=True)
+ merged_identifiers = db.get_identifiers(dest_id, index_is_id=True)
orig_dest_comments = dest_mi.comments
dest_cover = db.cover(dest_id, index_is_id=True)
had_orig_cover = bool(dest_cover)
for src_id in src_ids:
src_mi = db.get_metadata(src_id, index_is_id=True)
+
if src_mi.comments and orig_dest_comments != src_mi.comments:
if not dest_mi.comments:
dest_mi.comments = src_mi.comments
@@ -523,7 +523,15 @@ class EditMetadataAction(InterfaceAction):
if not dest_mi.series:
dest_mi.series = src_mi.series
dest_mi.series_index = src_mi.series_index
+
+ src_identifiers = db.get_identifiers(src_id, index_is_id=True)
+ src_identifiers.update(merged_identifiers)
+ merged_identifiers = src_identifiers.copy()
+
db.set_metadata(dest_id, dest_mi, ignore_errors=False)
+
+ db.set_identifiers(dest_id, merged_identifiers)
+
if not had_orig_cover and dest_cover:
db.set_cover(dest_id, dest_cover)