diff --git a/advlabdb/modelViews.py b/advlabdb/modelViews.py index 37f4511..ed7b121 100644 --- a/advlabdb/modelViews.py +++ b/advlabdb/modelViews.py @@ -187,9 +187,27 @@ class PartStudentModelView(SecureModelView): form_excluded_columns = ["experiment_marks"] +class GroupModelView(SecureModelView): + partsLabels = getConfig("partsLabels") + column_filters = [PartFilter(Group.part_id, "Part", options=list(zip(partsLabels, partsLabels)))] + + def validate_form(self, form): + if request.method == "POST": + if Group.query.filter(Group.number == form.number.data, Group.part == form.part.data).first(): + lastTakenGroupNumber = ( + Group.query.filter(Group.part == form.part.data).order_by(Group.number)[-1].number + ) + flash( + f"Group number taken in this part! Last group number taken in this part is {lastTakenGroupNumber}.", + "warning", + ) + return False + return super().validate_form(form) + + admin.add_view(StudentModelView(Student, db.session)) admin.add_view(PartStudentModelView(PartStudent, db.session)) -admin.add_view(SecureModelView(Group, db.session)) +admin.add_view(GroupModelView(Group, db.session)) admin.add_view(SecureModelView(GroupExperiment, db.session)) admin.add_view(SecureModelView(Experiment, db.session)) admin.add_view(SecureModelView(PartExperiment, db.session)) diff --git a/advlabdb/utils.py b/advlabdb/utils.py index c18ad4f..124556e 100644 --- a/advlabdb/utils.py +++ b/advlabdb/utils.py @@ -99,7 +99,6 @@ def partFromLabelInUserActiveSemester(partLabel): for part in userActiveSemester().parts: if part.label == partLabel: return part - return False def setActiveSemester(semesterId):