Example #1
0
 def test_serialize_metadata(self):  # {{{
     from calibre.utils.serialize import json_dumps, json_loads, msgpack_dumps, msgpack_loads
     from calibre.library.field_metadata import fm_as_dict
     cache = self.init_cache(self.library_path)
     fm = cache.field_metadata
     for d, l in ((json_dumps, json_loads), (msgpack_dumps, msgpack_loads)):
         fm2 = l(d(fm))
         self.assertEqual(fm_as_dict(fm), fm_as_dict(fm2))
     for i in range(1, 4):
         mi = cache.get_metadata(i, get_cover=True, cover_as_data=True)
         rmi = msgpack_loads(msgpack_dumps(mi))
         self.compare_metadata(mi, rmi, exclude='format_metadata has_cover formats id'.split())
         rmi = json_loads(json_dumps(mi))
         self.compare_metadata(mi, rmi, exclude='format_metadata has_cover formats id'.split())
Example #2
0
 def test_serialize_metadata(self):  # {{{
     from calibre.utils.serialize import json_dumps, json_loads, msgpack_dumps, msgpack_loads
     from calibre.library.field_metadata import fm_as_dict
     cache = self.init_cache(self.library_path)
     fm = cache.field_metadata
     for d, l in ((json_dumps, json_loads), (msgpack_dumps, msgpack_loads)):
         fm2 = l(d(fm))
         self.assertEqual(fm_as_dict(fm), fm_as_dict(fm2))
     for i in range(1, 4):
         mi = cache.get_metadata(i, get_cover=True, cover_as_data=True)
         rmi = msgpack_loads(msgpack_dumps(mi))
         self.compare_metadata(mi, rmi, exclude='format_metadata has_cover formats id'.split())
         rmi = json_loads(json_dumps(mi))
         self.compare_metadata(mi, rmi, exclude='format_metadata has_cover formats id'.split())
Example #3
0
 def get_props(db):
     props = ('user_version', 'is_second_db', 'library_id',
             'custom_column_label_map', 'custom_column_num_map', 'library_path', 'dbpath')
     fprops = ('last_modified', )
     ans = {x:getattr(db, x) for x in props}
     ans.update({x:getattr(db, x)() for x in fprops})
     ans['all_ids'] = frozenset(db.all_ids())
     ans['field_metadata'] = fm_as_dict(db.field_metadata)
     return to_unicode(ans)
Example #4
0
 def get_props(db):
     props = ('user_version', 'is_second_db', 'library_id',
             'custom_column_label_map', 'custom_column_num_map', 'library_path', 'dbpath')
     fprops = ('last_modified', )
     ans = {x:getattr(db, x) for x in props}
     ans.update({x:getattr(db, x)() for x in fprops})
     ans['all_ids'] = frozenset(db.all_ids())
     ans['field_metadata'] = fm_as_dict(db.field_metadata)
     return to_unicode(ans)
Example #5
0
def encoder(obj, for_json=False):
    if isinstance(obj, datetime):
        return encoded(0, unicode(obj.isoformat()), for_json)
    if isinstance(obj, (set, frozenset)):
        return encoded(1, tuple(obj), for_json)
    if getattr(obj, '__calibre_serializable__', False):
        from calibre.ebooks.metadata.book.base import Metadata
        from calibre.library.field_metadata import FieldMetadata, fm_as_dict
        from calibre.db.categories import Tag
        if isinstance(obj, Metadata):
            from calibre.ebooks.metadata.book.serialize import metadata_as_dict
            return encoded(
                2, metadata_as_dict(obj, encode_cover_data=for_json), for_json
            )
        elif isinstance(obj, FieldMetadata):
            return encoded(3, fm_as_dict(obj), for_json)
        elif isinstance(obj, Tag):
            return encoded(4, obj.as_dict(), for_json)
    raise TypeError('Cannot serialize objects of type {}'.format(type(obj)))