2022-11-16 20:42:40 +01:00
|
|
|
from marshmallow import Schema, fields, validate
|
2022-10-26 15:11:50 +02:00
|
|
|
|
|
|
|
from ..validators import validate_datetime_greater_than_now
|
|
|
|
|
|
|
|
|
2022-11-16 20:42:40 +01:00
|
|
|
class TermOfDefenceSchema(Schema):
|
2022-10-26 15:11:50 +02:00
|
|
|
start_date = fields.DateTime(validate=validate_datetime_greater_than_now, required=True)
|
|
|
|
end_date = fields.DateTime(validate=validate_datetime_greater_than_now, required=True)
|
2022-11-16 20:42:40 +01:00
|
|
|
project_supervisors = fields.List(fields.Integer(required=True), validate=validate.Length(3, 3))
|
|
|
|
|
|
|
|
|
|
|
|
class ProjectSupervisorForTermOfDefenceSchema(Schema):
|
|
|
|
id = fields.Str()
|
|
|
|
first_name = fields.Str()
|
|
|
|
last_name = fields.Str()
|
|
|
|
|
|
|
|
|
|
|
|
class TermOfDefenceItemSchema(Schema):
|
2022-11-19 20:43:05 +01:00
|
|
|
id = fields.Integer()
|
2022-11-16 20:42:40 +01:00
|
|
|
start_date = fields.DateTime()
|
|
|
|
end_date = fields.DateTime()
|
|
|
|
members_of_committee = fields.List(fields.Nested(ProjectSupervisorForTermOfDefenceSchema))
|
|
|
|
|
|
|
|
|
|
|
|
class TermOfDefenceListSchema(Schema):
|
|
|
|
term_of_defences = fields.List(fields.Nested(TermOfDefenceItemSchema))
|
|
|
|
|
|
|
|
|
2022-11-19 20:43:05 +01:00
|
|
|
class StudentDataItemSchema(Schema):
|
|
|
|
index = fields.Integer()
|
|
|
|
first_name = fields.Str()
|
|
|
|
last_name = fields.Str()
|
|
|
|
|
|
|
|
|
|
|
|
class GroupDataItemSchema(Schema):
|
|
|
|
name = fields.Str()
|
|
|
|
students = fields.List(fields.Nested(StudentDataItemSchema))
|
|
|
|
|
|
|
|
|
|
|
|
class AssignedGroupToTermOfDefenceItemSchema(TermOfDefenceItemSchema):
|
|
|
|
group = fields.Nested(GroupDataItemSchema)
|
|
|
|
|
|
|
|
|
|
|
|
class AssignedGroupToTermOfDefenceListSchema(Schema):
|
|
|
|
term_of_defences = fields.List(fields.Nested(AssignedGroupToTermOfDefenceItemSchema))
|
|
|
|
|
|
|
|
|
2022-11-16 20:42:40 +01:00
|
|
|
class ProjectSupervisorForTemporaryAvailabilitySchema(Schema):
|
|
|
|
id = fields.Str()
|
|
|
|
first_name = fields.Str()
|
|
|
|
last_name = fields.Str()
|
|
|
|
|
|
|
|
|
|
|
|
class TemporaryAvailabilityItemSchema(Schema):
|
|
|
|
start_date = fields.DateTime()
|
|
|
|
end_date = fields.DateTime()
|
|
|
|
project_supervisor = fields.Nested(ProjectSupervisorForTemporaryAvailabilitySchema)
|
|
|
|
|
|
|
|
|
|
|
|
class TemporaryAvailabilityListSchema(Schema):
|
|
|
|
temporary_availabilities = fields.List(fields.Nested(TemporaryAvailabilityItemSchema))
|