42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from marshmallow import Schema, fields, validate
|
|
|
|
from ..validators import validate_datetime_greater_than_now
|
|
|
|
|
|
class TermOfDefenceSchema(Schema):
|
|
start_date = fields.DateTime(validate=validate_datetime_greater_than_now, required=True)
|
|
end_date = fields.DateTime(validate=validate_datetime_greater_than_now, required=True)
|
|
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):
|
|
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))
|
|
|
|
|
|
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))
|