From 07951b83e2a15d4eaccf93931a2335e0dd7b7d3c Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sat, 20 Dec 2014 21:39:47 -0600 Subject: [PATCH] Only save grade change when grade actually changed --- course/flow.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/course/flow.py b/course/flow.py index 33428115..72877c42 100644 --- a/course/flow.py +++ b/course/flow.py @@ -504,7 +504,28 @@ def grade_flow_session(fctx, flow_session, current_access_rule, # creator left as NULL gchange.flow_session = flow_session gchange.comment = comment - gchange.save() + + previous_grade_changes = list(GradeChange.objects + .filter( + opportunity=gchange.opportunity, + participation=gchange.participation, + state=gchange.state, + attempt_id=gchange.attempt_id, + flow_session=gchange.flow_session) + .order_by("-grade_time") + [:1]) + + # only save if modified or no previous grades + do_save = True + if previous_grade_changes: + previous_grade_change, = previous_grade_changes + if (previous_grade_change.points == gchange.points + and previous_grade_change.max_points == gchange.max_points + and previous_grade_change.comment == gchange.comment): + do_save = False + + if do_save: + gchange.save() return grade_info -- GitLab