69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
|
from marshmallow import fields, validate
|
||
|
|
||
|
from ...dependencies import ma
|
||
|
from ...students.models import Student, Group
|
||
|
from ...project_supervisor.models import ProjectSupervisor
|
||
|
from ..validators import validate_index
|
||
|
|
||
|
|
||
|
class ProjectSupervisorSchema(ma.SQLAlchemyAutoSchema):
|
||
|
class Meta:
|
||
|
model = ProjectSupervisor
|
||
|
include_relationships = False
|
||
|
|
||
|
|
||
|
class GroupSchema(ma.SQLAlchemyAutoSchema):
|
||
|
project_supervisor = fields.Nested(ProjectSupervisorSchema)
|
||
|
|
||
|
class Meta:
|
||
|
model = Group
|
||
|
|
||
|
|
||
|
class StudentSchema(ma.SQLAlchemyAutoSchema):
|
||
|
group = fields.Nested(GroupSchema)
|
||
|
|
||
|
class Meta:
|
||
|
model = Student
|
||
|
|
||
|
|
||
|
class StudentsPaginationSchema(ma.Schema):
|
||
|
students = fields.List(fields.Nested(StudentSchema))
|
||
|
max_pages = fields.Integer()
|
||
|
|
||
|
|
||
|
class StudentListFileDownloaderSchema(ma.Schema):
|
||
|
mode = fields.Integer()
|
||
|
|
||
|
|
||
|
class StudentCreateSchema(ma.Schema):
|
||
|
first_name = fields.Str(validate=validate.Length(min=1, max=255), required=True)
|
||
|
last_name = fields.Str(validate=validate.Length(min=1, max=255), required=True)
|
||
|
pesel = fields.Str(validate=validate.Length(min=0, max=11), required=True)
|
||
|
index = fields.Integer(validate=validate_index, required=True)
|
||
|
mode = fields.Boolean(required=True)
|
||
|
|
||
|
|
||
|
class StudentEditSchema(ma.Schema):
|
||
|
first_name = fields.Str(validate=validate.Length(min=1, max=255))
|
||
|
last_name = fields.Str(validate=validate.Length(min=1, max=255))
|
||
|
pesel = fields.Str(validate=validate.Length(min=0, max=11))
|
||
|
index = fields.Integer(validate=validate_index)
|
||
|
mode = fields.Boolean()
|
||
|
|
||
|
|
||
|
class MessageSchema(ma.Schema):
|
||
|
message = fields.Str(required=True)
|
||
|
|
||
|
|
||
|
class FileSchema(ma.Schema):
|
||
|
file = fields.Raw(type='file', required=True)
|
||
|
|
||
|
|
||
|
class StudentQuerySchema(ma.Schema):
|
||
|
fullname = fields.Str()
|
||
|
order_by_first_name = fields.Str()
|
||
|
order_by_last_name = fields.Str()
|
||
|
page = fields.Integer()
|
||
|
per_page = fields.Integer()
|
||
|
mode = fields.Boolean()
|