class MessageSchema(ma.ModelSchema): id = Integer(required=False) text = Str(required=True) created_at = DateTime(required=False) author = Pluck('UserSchema', "id", required=True, many=False) chat = Pluck('ChatSchema', "id", required=True, many=False) class Meta(BaseSchema.Meta): model = Message
class ChatSchema(ma.ModelSchema): id = Integer(required=False, data_key="chat") name = Str(required=True) created_at = DateTime(required=False) messages = Nested('MessageSchema', many=True, exclude=('chat', ), required=False) users = Pluck('UserSchema', 'id', many=True, required=True) event = Pluck('EventSchema', 'id', many=False, required=True) class Meta(BaseSchema.Meta): model = Chat
class MessageSchema(ma.ModelSchema): id = Integer(required=False) text = Str(required=True) created_at = DateTime(required=False) author = Pluck('UserSchema', "id", required=True) chat = Pluck('ChatSchema', "id", required=True) class Meta(BaseSchema.Meta): model = Message @validates_schema def validate_text(self, data, **kwargs): if not data.get('text'): raise ValidationError('Missing text')
class RejectedCipherSuiteSchema(SQLAlchemyAutoSchema): class Meta(BaseSchema.Meta): model = db_models.RejectedCipherSuite include_relationships = True ciphersuite = Nested(CipherSuiteSchema) handshake_error_message = Pluck("RejectedCipherHandshakeErrorMessageSchema", "handshake_error_message")
class AcceptedCipherSuiteSchema(SQLAlchemyAutoSchema): class Meta(BaseSchema.Meta): model = db_models.AcceptedCipherSuite include_relationships = True ciphersuite = Nested(CipherSuiteSchema) post_handshake_response = Pluck("AcceptedCipherPostHandshakeResponseSchema", "post_handshake_response")
class EjercicioSchema(SQLAlchemySchema): class Meta: model = Ejercicio load_instance = True unknown = EXCLUDE idEjercicio = auto_field("id_ejercicio") nombre = auto_field() patron = Pluck(PatronSchema(session=db.session), "nombre", dump_only=True) urlVideo = auto_field("url_video") pesoInicial = auto_field("peso_inicial") esTemporal = auto_field("es_temporal") creado_en = auto_field(dump_only=True) actualizado_en = auto_field(dump_only=True)
class ChatSchema(ma.ModelSchema): id = Integer(required=False, data_key="chat") name = Str(required=True) created_at = DateTime(required=False) messages = Nested('MessageSchema', many=True, exclude=('chat',), required=False) users = Pluck('UserSchema', 'id', many=True, required=True) class Meta(BaseSchema.Meta): model = Chat @validates_schema def validate_name(self, data, **kwargs): if data.get('id'): return elif not data.get('name'): raise ValidationError('Missing chat name')
class BlockingSchema(mm.SQLAlchemyAutoSchema): blocked_rooms = Nested(BlockedRoomSchema, many=True) allowed = PrincipalList() permissions = Method('_get_permissions') created_by = Pluck(UserSchema, 'full_name', attribute='created_by_user') class Meta: model = Blocking fields = ('id', 'start_date', 'end_date', 'reason', 'blocked_rooms', 'allowed', 'created_by', 'permissions') def _get_permissions(self, blocking): methods = ('can_delete', 'can_edit') admin_permissions = None user_permissions = {x: getattr(blocking, x)(session.user, allow_admin=False) for x in methods} if rb_is_admin(session.user): admin_permissions = {x: getattr(blocking, x)(session.user) for x in methods} return {'user': user_permissions, 'admin': admin_permissions}