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')
|
um = ga(self, '_user_metadata')
|
||||||
return iter(um.custom_field_keys())
|
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))
|
'Standard field: %s not the same for book %s' % (field, book_id))
|
||||||
self.assertEqual(mi.format_field(field), pmi.format_field(field),
|
self.assertEqual(mi.format_field(field), pmi.format_field(field),
|
||||||
'Standard field format: %s not the same for book %s' % (field, book_id))
|
'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():
|
for field, meta in cache.field_metadata.custom_iteritems():
|
||||||
if meta['datatype'] != 'composite':
|
if meta['datatype'] != 'composite':
|
||||||
self.assertEqual(f(getattr(mi, field)), f(getattr(pmi, field)),
|
self.assertEqual(f(getattr(mi, field)), f(getattr(pmi, field)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user