from marshmallow import Schema, fields
from tinydb.database import Document
[docs]def drop_identifier(data):
return {k: v for k, v in data.items() if k != 'identifier'}
[docs]class Base(Schema):
[docs] def get_attribute(self, attr, obj, default):
if attr == 'identifier':
return obj.doc_id
else:
return super().get_attribute(attr, obj, default)
[docs] def make_object(self, data):
return Document(drop_identifier(data), doc_id=data['identifier'])
[docs]class WallSchema(Base):
identifier = fields.Integer(required=True)
name = fields.String(required=True)
tiles = fields.List(fields.Dict(required=True))
layout = fields.Dict(required=True)