class ChatRoomSchema(ModelSchema): admin = fields.Function( lambda obj: SessionSchema(many=False).dump(obj.admin).data) members = fields.Function( lambda obj: SessionSchema(many=True).dump(obj.members).data) pending_members = fields.Function( lambda obj: SessionSchema(many=True).dump(obj.pending_members).data) class Meta: model = ChatRoomDocument exclude = ['expiration']
class Client(ModelSchema): full_name = fields.Function( lambda obj: (obj.first_name and obj.first_name + ' ' or '') + (obj.middle_name and obj.middle_name + ' ' or '') + (obj.last_name and obj.last_name or '')) total_balance = fields.Function(lambda obj: float( (obj.balance.bonus or 0) + (obj.balance.referral or 0) + (obj.balance.referral or 0))) class Meta: model = ClientDocument exclude = ['password']
class Admin(ModelSchema): full_name = fields.Function( lambda obj: (obj.first_name and obj.first_name + ' ' or '') + (obj.last_name and obj.last_name or '')) class Meta: model = AdminDocument exclude = ['password']
class Session(ModelSchema): user = fields.Function(lambda obj: (obj.client and ClientSchema( many=False).dump(obj.client).data) or (obj.admin and AdminSchema( many=False).dump(obj.admin).data) or None) class Meta: model = SessionDocument exclude = ['admin', 'client', 'password']
class ChildCustomStudentSchema(CustomStudentSchema): age = fields.Function(lambda v: 'child-custom-' + str(v.age)) class Meta: fields = ('full_name', 'age', 'custom_field') model_fields_kwargs = {'full_name': {'load_only': True}}
class CustomStudentSchema(schemas.StudentSchema): age = fields.Function(lambda v: 'custom-' + str(v.age)) custom_field = fields.Function(lambda v: 'custom-field') class Meta: fields = ('full_name', 'age')
class StudentSchema(ModelSchema): uppername = fields.Function(lambda x: x.full_name.upper()) class Meta: model = models.Student additional = ('date_created', )
class MessageSchema(ModelSchema): session = fields.Function( lambda obj: SessionSchema(many=False).dump(obj.session).data) class Meta: model = MessageDocument
class Session(ModelSchema): user = fields.Function( lambda obj: UserSchema().dump(obj.user).data) or None class Meta: model = SessionDocument