Source code for caspia.homeserver.models.schemas

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)