mirror of
git://github.com/kovidgoyal/calibre.git
synced 2026-01-04 04:05:38 +01:00
Merge branch 'master' of https://github.com/cbhaley/calibre into master
This commit is contained in:
commit
02dcac0702
3 changed files with 15 additions and 0 deletions
|
|
@ -436,6 +436,19 @@ def set_user_metadata(self, field, metadata):
|
|||
_data = object.__getattribute__(self, '_data')
|
||||
_data['user_metadata'][field] = m
|
||||
|
||||
def remove_stale_user_metadata(self, other_mi):
|
||||
'''
|
||||
Remove user metadata keys (custom column keys) if they
|
||||
don't exist in 'other_mi', which must be a metadata object
|
||||
'''
|
||||
me = self.get_all_user_metadata(make_copy=False)
|
||||
other = set(other_mi.custom_field_keys())
|
||||
new = {}
|
||||
for k,v in me.items():
|
||||
if k in other:
|
||||
new[k] = v
|
||||
self.set_all_user_metadata(new)
|
||||
|
||||
def template_to_attribute(self, other, ops):
|
||||
'''
|
||||
Takes a list [(src,dest), (src,dest)], evaluates the template in the
|
||||
|
|
|
|||
|
|
@ -1312,6 +1312,7 @@ def smart_update(self, mi, replace_metadata=False, apply_null=False):
|
|||
if apply_null or langs:
|
||||
self.languages = langs or []
|
||||
temp = self.to_book_metadata()
|
||||
temp.remove_stale_user_metadata(mi)
|
||||
temp.smart_update(mi, replace_metadata=replace_metadata)
|
||||
if not replace_metadata and callable(getattr(temp, 'custom_field_keys', None)):
|
||||
# We have to replace non-null fields regardless of the value of
|
||||
|
|
|
|||
|
|
@ -1066,6 +1066,7 @@ def ok(x):
|
|||
set_application_id(root, prefixes, refines, mi.application_id)
|
||||
if mi.uuid:
|
||||
set_uuid(root, prefixes, refines, mi.uuid)
|
||||
current_mi.remove_stale_user_metadata(mi)
|
||||
new_user_metadata, current_user_metadata = mi.get_all_user_metadata(True), current_mi.get_all_user_metadata(True)
|
||||
missing = object()
|
||||
for key in tuple(new_user_metadata):
|
||||
|
|
|
|||
Loading…
Reference in a new issue