mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add get_standard_metadata() to ProxyMetadata
This commit is contained in:
parent
7460446395
commit
821179170a
@ -342,3 +342,11 @@ class ProxyMetadata(Metadata):
|
||||
um = ga(self, '_user_metadata')
|
||||
return iter(um.custom_field_keys())
|
||||
|
||||
def get_standard_metadata(self, field, make_copy=False):
|
||||
field_metadata = ga(self, '_user_metadata')
|
||||
if field in field_metadata and field_metadata[field]['kind'] == 'field':
|
||||
if make_copy:
|
||||
return deepcopy(field_metadata[field])
|
||||
return field_metadata[field]
|
||||
return None
|
||||
|
||||
|
@ -477,6 +477,16 @@ class ReadingTest(BaseTest):
|
||||
'Standard field: %s not the same for book %s' % (field, book_id))
|
||||
self.assertEqual(mi.format_field(field), pmi.format_field(field),
|
||||
'Standard field format: %s not the same for book %s' % (field, book_id))
|
||||
def f(x):
|
||||
try:
|
||||
return x['label']
|
||||
except:
|
||||
return x
|
||||
if field not in {'#series_index'}:
|
||||
v = pmi.get_standard_metadata(field)
|
||||
self.assertTrue(v is None or isinstance(v, dict))
|
||||
self.assertEqual(f(mi.get_standard_metadata(field, False)), f(v),
|
||||
'get_standard_metadata() failed for field %s' % field)
|
||||
for field, meta in cache.field_metadata.custom_iteritems():
|
||||
if meta['datatype'] != 'composite':
|
||||
self.assertEqual(f(getattr(mi, field)), f(getattr(pmi, field)),
|
||||
|
Loading…
x
Reference in New Issue
Block a user