From 7f3797719d8816c0f0726cdbefee71c1caa979a2 Mon Sep 17 00:00:00 2001 From: Mo8it Date: Thu, 18 Aug 2022 17:39:40 +0200 Subject: [PATCH] Avoid rounding two times --- advlabdb/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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: