From 05d17d151dfa690acc7985379459f380150e7057 Mon Sep 17 00:00:00 2001 From: Mo8it Date: Wed, 18 Aug 2021 19:07:56 +0200 Subject: [PATCH] Can't edit final_part_mark and fixed setting edited_by_admin --- advlabdb/adminModelViews.py | 38 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/advlabdb/adminModelViews.py b/advlabdb/adminModelViews.py index a5319e9..1bac562 100644 --- a/advlabdb/adminModelViews.py +++ b/advlabdb/adminModelViews.py @@ -312,9 +312,6 @@ def groupQueryFactory(): return Group.query.filter(Group.semester == userActiveSemester()) -markChoices = [(-1, "-")] + list(zip(range(16)[::-1], range(16)[::-1])) - - class PartStudentView(SecureAdminModelView): class CreateForm(Form): def studentQueryFactory(): @@ -344,7 +341,6 @@ class PartStudentView(SecureAdminModelView): class EditForm(CreateForm): student = None part = None - final_part_mark = SelectField("Final Part Mark", choices=markChoices, coerce=int) form = EditForm @@ -360,12 +356,6 @@ class PartStudentView(SecureAdminModelView): def on_model_change(self, form, model, is_created): PartStudent.check(model.group, model.part) - def update_model(self, form, model): - if form.final_part_mark.data == -1: - form.final_part_mark.data = None - - return super().update_model(form, model) - def partStudentQueryFactory(): return PartStudent.query.filter(PartStudent.part.has(Part.semester == userActiveSemester())) @@ -446,10 +436,8 @@ class ExperimentView(SecureAdminModelView): form_args = { "wiki_link": {"validators": [URL()]}, "oral_weighting": { - "default": 0.5, - "description": "Oral and protocol weighting have to add to 1! Both are rounded to 2 decimal digits.", + "description": "Oral and protocol weighting have to add to 1! Both are rounded to 2 decimal digits." }, - "protocol_weighting": {"default": 0.5}, } form_extra_fields = { "program": QuerySelectField( @@ -702,6 +690,8 @@ class ExperimentMarkView(SecureAdminModelView): blank_text="-", ) + markChoices = [(-1, "-")] + list(zip(range(16)[::-1], range(16)[::-1])) + oral_mark = SelectField("Oral Mark", choices=markChoices, coerce=int) protocol_mark = SelectField("Protocol Mark", choices=markChoices, coerce=int) @@ -753,15 +743,9 @@ class ExperimentMarkView(SecureAdminModelView): def create_model(self, form): form = ExperimentMarkView.checkForm(form) - return super().create_model(form) + model = super().create_model(form) - def update_model(self, form, model): - form = ExperimentMarkView.checkForm(form) - - return super().update_model(form, model) - - def after_model_change(self, form, model, is_created): - if model.oral_mark or model.protocol_mark: + if model and (model.oral_mark or model.protocol_mark): try: model.edited_by_admin = True @@ -771,6 +755,18 @@ class ExperimentMarkView(SecureAdminModelView): self.session.rollback() + return model + + def update_model(self, form, model): + form = ExperimentMarkView.checkForm(form) + + if (form.oral_mark and form.oral_mark.data != model.oral_mark) or ( + form.protocol_mark and form.protocol_mark.data != model.protocol_mark + ): + model.edited_by_admin = True + + return super().update_model(form, model) + class ProgramView(SecureAdminModelView): can_view_details = True