diff --git a/advlabdb/models.py b/advlabdb/models.py index 9a34848..47d725c 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -113,7 +113,7 @@ class PartStudent(db.Model): Return True if final_part_mark changed, False otherwise. """ finalWeightingSum = 0 - finalMark = 0 + finalMarkSum = 0 groupExperiments = [] for experimentMark in self.experiment_marks: @@ -138,7 +138,11 @@ class PartStudent(db.Model): finalWeighting = semesterExperiment.final_weighting finalWeightingSum += finalWeighting - finalMark += finalWeighting * experimentMark.final_experiment_mark + # Not using final_experiment_mark to avoid rounding two times + finalMarkSum += finalWeighting * ( + semesterExperiment.protocol_weighting * experimentMark.protocol_mark + + semesterExperiment.oral_weighting * experimentMark.oral_mark + ) if set(groupExperiments) != set(self.group.group_experiments): flash(f"{self} does not have an experiment mark for every group experiment in his group!", "warning") @@ -147,7 +151,7 @@ class PartStudent(db.Model): oldFinalPartMark = self.final_part_mark try: - self.final_part_mark = roundHalfUpToInt(finalMark / finalWeightingSum) + self.final_part_mark = roundHalfUpToInt(finalMarkSum / finalWeightingSum) db.session.commit() except Exception as ex: