import datetime from factory import alchemy, Sequence from factory.faker import Faker from factory.fuzzy import FuzzyInteger, FuzzyDateTime from app.dependencies import db from app.students.models import Student, Group, YearGroupStudents from app.project_supervisor.models import ProjectSupervisor, YearGroupProjectSupervisors from app.examination_schedule.models import ExaminationSchedule class ProjectSupervisorFactory(alchemy.SQLAlchemyModelFactory): class Meta: model = ProjectSupervisor sqlalchemy_session = db.session first_name = Faker('first_name') last_name = Faker('last_name') email = Faker('email') class YearGroupProjectSupervisorsFactory(alchemy.SQLAlchemyModelFactory): class Meta: model = YearGroupProjectSupervisors sqlalchemy_session = db.session limit_group = 4 class GroupFactory(alchemy.SQLAlchemyModelFactory): class Meta: model = Group sqlalchemy_session = db.session name = Sequence(lambda n: f'Group-{n}') points_for_first_term = FuzzyInteger(1, 5) points_for_second_term = FuzzyInteger(1, 5) class StudentFactory(alchemy.SQLAlchemyModelFactory): class Meta: model = Student sqlalchemy_session = db.session first_name = Faker('first_name') last_name = Faker('last_name') email = Faker('email') index = Sequence(lambda n: 400_000 + n) class YearGroupStudentsFactory(alchemy.SQLAlchemyModelFactory): class Meta: model = YearGroupStudents sqlalchemy_session = db.session class ExaminationScheduleFactory(alchemy.SQLAlchemyModelFactory): class Meta: model = ExaminationSchedule sqlalchemy_session = db.session title = Sequence(lambda n: f'Examination schedule {n}') duration_time = 30 start_date = FuzzyDateTime(datetime.datetime(2020, 1, 1, tzinfo=datetime.timezone.utc), datetime.datetime(2020, 1, 5, tzinfo=datetime.timezone.utc)) end_date = FuzzyDateTime(datetime.datetime(2020, 1, 10, tzinfo=datetime.timezone.utc), datetime.datetime(2020, 1, 20, tzinfo=datetime.timezone.utc))