mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Fix #6120 (User Defined metadata/Columns not merged.)
This commit is contained in:
commit
f63cd32082
@ -804,11 +804,11 @@ class EditMetadataAction(object): # {{{
|
|||||||
for src_id in src_ids:
|
for src_id in src_ids:
|
||||||
src_mi = db.get_metadata(src_id, index_is_id=True, get_cover=True)
|
src_mi = db.get_metadata(src_id, index_is_id=True, get_cover=True)
|
||||||
if src_mi.comments and orig_dest_comments != src_mi.comments:
|
if src_mi.comments and orig_dest_comments != src_mi.comments:
|
||||||
if not dest_mi.comments or len(dest_mi.comments) == 0:
|
if not dest_mi.comments:
|
||||||
dest_mi.comments = src_mi.comments
|
dest_mi.comments = src_mi.comments
|
||||||
else:
|
else:
|
||||||
dest_mi.comments = unicode(dest_mi.comments) + u'\n\n' + unicode(src_mi.comments)
|
dest_mi.comments = unicode(dest_mi.comments) + u'\n\n' + unicode(src_mi.comments)
|
||||||
if src_mi.title and src_mi.title and (not dest_mi.title or
|
if src_mi.title and (not dest_mi.title or
|
||||||
dest_mi.title == _('Unknown')):
|
dest_mi.title == _('Unknown')):
|
||||||
dest_mi.title = src_mi.title
|
dest_mi.title = src_mi.title
|
||||||
if src_mi.title and (not dest_mi.authors or dest_mi.authors[0] ==
|
if src_mi.title and (not dest_mi.authors or dest_mi.authors[0] ==
|
||||||
@ -819,8 +819,7 @@ class EditMetadataAction(object): # {{{
|
|||||||
if not dest_mi.tags:
|
if not dest_mi.tags:
|
||||||
dest_mi.tags = src_mi.tags
|
dest_mi.tags = src_mi.tags
|
||||||
else:
|
else:
|
||||||
for tag in src_mi.tags:
|
dest_mi.tags.extend(src_mi.tags)
|
||||||
dest_mi.tags.append(tag)
|
|
||||||
if src_mi.cover and not dest_mi.cover:
|
if src_mi.cover and not dest_mi.cover:
|
||||||
dest_mi.cover = src_mi.cover
|
dest_mi.cover = src_mi.cover
|
||||||
if not dest_mi.publisher:
|
if not dest_mi.publisher:
|
||||||
@ -831,6 +830,44 @@ class EditMetadataAction(object): # {{{
|
|||||||
dest_mi.series = src_mi.series
|
dest_mi.series = src_mi.series
|
||||||
dest_mi.series_index = src_mi.series_index
|
dest_mi.series_index = src_mi.series_index
|
||||||
db.set_metadata(dest_id, dest_mi, ignore_errors=False)
|
db.set_metadata(dest_id, dest_mi, ignore_errors=False)
|
||||||
|
|
||||||
|
for key in db.field_metadata: #loop thru all defined fields
|
||||||
|
if db.field_metadata[key]['is_custom']:
|
||||||
|
colnum = db.field_metadata[key]['colnum']
|
||||||
|
# Get orig_dest_comments before it gets changed
|
||||||
|
if db.field_metadata[key]['datatype'] == 'comments':
|
||||||
|
orig_dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True)
|
||||||
|
for src_id in src_ids:
|
||||||
|
dest_value = db.get_custom(dest_id, num=colnum, index_is_id=True)
|
||||||
|
src_value = db.get_custom(src_id, num=colnum, index_is_id=True)
|
||||||
|
if db.field_metadata[key]['datatype'] == 'comments':
|
||||||
|
if src_value and src_value != orig_dest_value:
|
||||||
|
if not dest_value:
|
||||||
|
db.set_custom(dest_id, src_value, num=colnum)
|
||||||
|
else:
|
||||||
|
dest_value = unicode(dest_value) + u'\n\n' + unicode(src_value)
|
||||||
|
db.set_custom(dest_id, dest_value, num=colnum)
|
||||||
|
if db.field_metadata[key]['datatype'] in \
|
||||||
|
('bool', 'int', 'float', 'rating', 'datetime') \
|
||||||
|
and not dest_value:
|
||||||
|
db.set_custom(dest_id, src_value, num=colnum)
|
||||||
|
if db.field_metadata[key]['datatype'] == 'series' \
|
||||||
|
and not dest_value:
|
||||||
|
if src_value:
|
||||||
|
src_index = db.get_custom_extra(src_id, num=colnum, index_is_id=True)
|
||||||
|
db.set_custom(dest_id, src_value, num=colnum, extra=src_index)
|
||||||
|
if db.field_metadata[key]['datatype'] == 'text' \
|
||||||
|
and not db.field_metadata[key]['is_multiple'] \
|
||||||
|
and not dest_value:
|
||||||
|
db.set_custom(dest_id, src_value, num=colnum)
|
||||||
|
if db.field_metadata[key]['datatype'] == 'text' \
|
||||||
|
and db.field_metadata[key]['is_multiple']:
|
||||||
|
if src_value:
|
||||||
|
if not dest_value:
|
||||||
|
dest_value = src_value
|
||||||
|
else:
|
||||||
|
dest_value.extend(src_value)
|
||||||
|
db.set_custom(dest_id, dest_value, num=colnum)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
def edit_device_collections(self, view, oncard=None):
|
def edit_device_collections(self, view, oncard=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user