From 068b4a8c44e3c0a3d17ef564651d20427cbd0b80 Mon Sep 17 00:00:00 2001 From: Alex Dusenbery Date: Fri, 1 Feb 2019 17:20:21 -0500 Subject: [PATCH] Distinguish zeros from null when considering grade overrides in subsection grades. --- lms/djangoapps/grades/subsection_grade.py | 11 +++++++++-- .../grades/tests/test_subsection_grade_factory.py | 14 ++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/lms/djangoapps/grades/subsection_grade.py b/lms/djangoapps/grades/subsection_grade.py index d8aa4e3ff4..8b327f8a60 100644 --- a/lms/djangoapps/grades/subsection_grade.py +++ b/lms/djangoapps/grades/subsection_grade.py @@ -195,8 +195,15 @@ class NonZeroSubsectionGrade(SubsectionGradeBase): possible_value = getattr(grade_model, 'possible_{}'.format(score_type)) if hasattr(grade_model, 'override'): score_type = 'graded_override' if is_graded else 'all_override' - earned_value = getattr(grade_model.override, 'earned_{}'.format(score_type)) or earned_value - possible_value = getattr(grade_model.override, 'possible_{}'.format(score_type)) or possible_value + + earned_override = getattr(grade_model.override, 'earned_{}'.format(score_type)) + if earned_override is not None: + earned_value = earned_override + + possible_override = getattr(grade_model.override, 'possible_{}'.format(score_type)) + if possible_override is not None: + possible_value = possible_override + return AggregatedScore( tw_earned=earned_value, tw_possible=possible_value, diff --git a/lms/djangoapps/grades/tests/test_subsection_grade_factory.py b/lms/djangoapps/grades/tests/test_subsection_grade_factory.py index 73fdcbaec3..6b3934312a 100644 --- a/lms/djangoapps/grades/tests/test_subsection_grade_factory.py +++ b/lms/djangoapps/grades/tests/test_subsection_grade_factory.py @@ -142,7 +142,7 @@ class TestSubsectionGradeFactory(ProblemSubmissionTestMixin, GradeTestBase): UserFactory(), persistent_grade, earned_graded_override=earned_graded_override, - earned_all_override=0, + earned_all_override=earned_graded_override, possible_graded_override=possible_graded_override, feature=PersistentSubsectionGradeOverrideHistory.GRADEBOOK, ) @@ -151,8 +151,10 @@ class TestSubsectionGradeFactory(ProblemSubmissionTestMixin, GradeTestBase): # the subsection grade returned should be 0/3 due to the override. with mock_get_score(2, 3): grade = self.subsection_grade_factory.update(self.sequence) - self.assert_grade( - grade, - earned_graded_override or persistent_grade.earned_graded, - possible_graded_override or persistent_grade.possible_graded - ) + expected_earned = earned_graded_override + if earned_graded_override is None: + expected_earned = persistent_grade.earned_graded + expected_possible = possible_graded_override + if possible_graded_override is None: + expected_possible = persistent_grade.possible_graded + self.assert_grade(grade, expected_earned, expected_possible)