mirror of
https://codeberg.org/Mo8it/AdvLabDB.git
synced 2024-11-08 21:21:06 +00:00
Remove GroupExperiment.customInit
This commit is contained in:
parent
86c7f6d915
commit
2f7d005ea4
4 changed files with 22 additions and 20 deletions
|
@ -571,7 +571,7 @@ class PartStudentView(SecureAdminModelView):
|
|||
return PartStudent.part.has(Part.semester == userActiveSemester())
|
||||
|
||||
def on_model_change(self, form, model, is_created):
|
||||
PartStudent.check(model.group, model.part)
|
||||
PartStudent.check(model.part, model.group)
|
||||
|
||||
|
||||
def partStudentQueryFactory():
|
||||
|
@ -1055,7 +1055,7 @@ class GroupExperimentView(SecureAdminModelView):
|
|||
return GroupExperiment.group.has(Group.semester == userActiveSemester())
|
||||
|
||||
def customCreateModel(self, form):
|
||||
return GroupExperiment.customInit(semester_experiment=form.semester_experiment.data, group=form.group.data)
|
||||
return GroupExperiment(semester_experiment=form.semester_experiment.data, group=form.group.data)
|
||||
|
||||
def on_model_change(self, form, model, is_created):
|
||||
if is_created:
|
||||
|
|
|
@ -243,7 +243,7 @@ def importFromFile(filePath):
|
|||
dbGroupExperiments = {}
|
||||
for i, id in enumerate(groupExperiments["id"]):
|
||||
id = int(id)
|
||||
dbGroupExperiment = GroupExperiment.customInit(
|
||||
dbGroupExperiment = GroupExperiment(
|
||||
semester_experiment=dbSemesterExperiments[int(groupExperiments["experiment_id"][i])],
|
||||
group=dbGroups[int(groupExperiments["group_id"][i])],
|
||||
)
|
||||
|
|
|
@ -73,16 +73,16 @@ class PartStudent(db.Model):
|
|||
db.UniqueConstraint(student_id, group_id),
|
||||
)
|
||||
|
||||
def check(group, part):
|
||||
def check(part, group):
|
||||
if group is not None and group.program != part.program:
|
||||
raise DataBaseException(
|
||||
f"Group's program {group.program} and student part's program {part.program} do not match!"
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
PartStudent.check(kwargs.get("group"), kwargs["part"])
|
||||
def __init__(self, student, part, group=None):
|
||||
PartStudent.check(part, group)
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
super().__init__(student=student, part=part, group=group)
|
||||
|
||||
def customUpdate(self, group, final_part_mark):
|
||||
Part.check(group, self.part)
|
||||
|
@ -176,11 +176,15 @@ class Group(db.Model):
|
|||
.order_by(Group.number.desc())
|
||||
.first()
|
||||
)
|
||||
lastTakenGroupNumber = (groupWithHighestNumber and groupWithHighestNumber.number) or 0
|
||||
|
||||
if groupWithHighestNumber is not None:
|
||||
number = groupWithHighestNumber.number + 1
|
||||
else:
|
||||
number = 1
|
||||
|
||||
return Group(
|
||||
program=program,
|
||||
number=lastTakenGroupNumber + 1,
|
||||
number=number,
|
||||
part_students=part_students,
|
||||
semester=semester,
|
||||
)
|
||||
|
@ -209,22 +213,20 @@ class GroupExperiment(db.Model):
|
|||
|
||||
__table_args__ = (db.UniqueConstraint(semester_experiment_id, group_id),)
|
||||
|
||||
def customInit(semester_experiment, group):
|
||||
def __init__(self, semester_experiment, group):
|
||||
for partStudent in group.part_students:
|
||||
student = partStudent.student
|
||||
for partStudent in student.part_students:
|
||||
for experimentMark in partStudent.experiment_marks:
|
||||
if experimentMark.group_experiment.semester_experiment.experiment == semester_experiment.experiment:
|
||||
raise Exception(
|
||||
raise DataBaseException(
|
||||
f"{student} has already done {semester_experiment.experiment} in {partStudent.part} and had {experimentMark}!"
|
||||
)
|
||||
|
||||
groupExperiment = GroupExperiment(semester_experiment=semester_experiment, group=group)
|
||||
super().__init__(semester_experiment=semester_experiment, group=group)
|
||||
|
||||
for partStudent in group.part_students:
|
||||
db.session.add(ExperimentMark.customInit(part_student=partStudent, group_experiment=groupExperiment))
|
||||
|
||||
return groupExperiment
|
||||
db.session.add(ExperimentMark.customInit(part_student=partStudent, group_experiment=self))
|
||||
|
||||
def repr(self):
|
||||
return f"SemExp {self.semester_experiment.repr()}; Gr {self.group.repr()}"
|
||||
|
@ -372,16 +374,16 @@ class Appointment(db.Model):
|
|||
semesterExperimentAssistants = semesterExperiment.assistants
|
||||
|
||||
if not semesterExperimentAssistants:
|
||||
raise Exception(f"{semesterExperiment} does not have assistants yet!")
|
||||
raise DataBaseException(f"{semesterExperiment} does not have assistants yet!")
|
||||
|
||||
if assistant:
|
||||
if assistant not in semesterExperimentAssistants:
|
||||
raise Exception(f"{assistant} not responsible for {semesterExperiment}!")
|
||||
raise DataBaseException(f"{assistant} not responsible for {semesterExperiment}!")
|
||||
else:
|
||||
if len(semesterExperimentAssistants) == 1:
|
||||
assistant = semesterExperimentAssistants[0]
|
||||
else:
|
||||
raise Exception(
|
||||
raise DataBaseException(
|
||||
f"Experiment {semesterExperiment} has more than one assistant. You have to assign one of these assistants: {semesterExperimentAssistants}"
|
||||
)
|
||||
|
||||
|
|
|
@ -92,8 +92,8 @@ def main():
|
|||
db.session.add(sx1)
|
||||
db.session.add(sx2)
|
||||
|
||||
gx1 = GroupExperiment.customInit(semester_experiment=sx1, group=g1)
|
||||
gx2 = GroupExperiment.customInit(semester_experiment=sx2, group=g2)
|
||||
gx1 = GroupExperiment(semester_experiment=sx1, group=g1)
|
||||
gx2 = GroupExperiment(semester_experiment=sx2, group=g2)
|
||||
|
||||
db.session.add(gx1)
|
||||
db.session.add(gx2)
|
||||
|
|
Loading…
Reference in a new issue