diff --git a/advlabdb/adminModelViews.py b/advlabdb/adminModelViews.py index bcbf36a..7cd90ef 100644 --- a/advlabdb/adminModelViews.py +++ b/advlabdb/adminModelViews.py @@ -1075,6 +1075,9 @@ class GroupExperimentView(SecureAdminModelView): def on_model_change(self, form, model, is_created): if is_created: + for part_student in form.group.data.part_students: + db.session.add(ExperimentMark(part_student=part_student, group_experiment=model)) + for date, special, assistant in ( (form.appointment1_date.data, form.appointment1_special.data, form.appointment1_assistant.data), (form.appointment2_date.data, form.appointment2_special.data, form.appointment2_assistant.data), diff --git a/advlabdb/database_import.py b/advlabdb/database_import.py index 7c34d10..25494cd 100644 --- a/advlabdb/database_import.py +++ b/advlabdb/database_import.py @@ -10,6 +10,7 @@ from .models import ( Appointment, Assistant, Experiment, + ExperimentMark, Group, GroupExperiment, Part, @@ -292,11 +293,14 @@ def importFromFile(filePath: Path): dbGroupExperiments = {} for i, id in enumerate(groupExperiments["id"]): id = int(not_nullable(id)) + group = dbGroups[int(not_nullable(groupExperiments["group_id"][i]))] dbGroupExperiment = GroupExperiment( semester_experiment=dbSemesterExperiments[int(not_nullable(groupExperiments["experiment_id"][i]))], - group=dbGroups[int(not_nullable(groupExperiments["group_id"][i]))], + group=group, ) db.session.add(dbGroupExperiment) + for part_student in group.part_students: + db.session.add(ExperimentMark(part_student=part_student, group_experiment=dbGroupExperiment)) dbGroupExperiments[id] = dbGroupExperiment # Appointment diff --git a/advlabdb/models.py b/advlabdb/models.py index e6c9a81..77e07df 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -281,9 +281,6 @@ class GroupExperiment(db.Model): super().__init__(semester_experiment=semester_experiment, group=group, **kwargs) - for partStudent in group.part_students: - db.session.add(ExperimentMark(part_student=partStudent, group_experiment=self)) - def update_experiment_marks_missing(self): for experiment_mark in self.experiment_marks: if experiment_mark.final_experiment_mark is None: diff --git a/cli/test/generate_test_db/main.py b/cli/test/generate_test_db/main.py index efe86bb..f543dff 100644 --- a/cli/test/generate_test_db/main.py +++ b/cli/test/generate_test_db/main.py @@ -12,6 +12,7 @@ from advlabdb.models import ( Appointment, Assistant, Experiment, + ExperimentMark, Group, GroupExperiment, Part, @@ -160,6 +161,8 @@ def _generate_test_db(): try: semester_experiment = semester_experiments[ind % num_semester_experiments] group_experiment = db_add(GroupExperiment(semester_experiment=semester_experiment, group=group)) + for part_student in group.part_students: + db.session.add(ExperimentMark(part_student=part_student, group_experiment=group_experiment)) except DatabaseException as ex: # Catch an error when a student becomes the same experiment for the second time. # Try the next experiment!