def test_override_highest_no_score(self): item = StudentItem.objects.create( student_id="score_test_student", course_id="score_test_course", item_id="i4x://mycourse/special_presentation", ) # Override score with no score Score.create_override_score(item, 9, 10) highest = ScoreSummary.objects.get(student_item=item).highest self.assertEqual(highest.points_earned, 9) self.assertEqual(highest.points_possible, 10)
def score_override(student_item_dict, points_override, points_possible): """ Create a score override for peer assessment question. Args: student_item (dict): The dictionary representation of a student item. points_override (string): Points provided by the instructor as an override. points_possible (string): Max points for this question. Returns: True if successful otherwise False """ student_item_model = _get_or_create_student_item(student_item_dict) try: Score.create_override_score(student_item_model, points_override, points_possible) except (DatabaseError, ValueError): msg = ( u"Error occurred while creating override score for" u" item {item_id} in course {course_id} for student {student_id}" u" points_possible {points_possible} points_override {points_override}" ).format( item_id=student_item_dict['item_id'], course_id=student_item_dict['course_id'], student_id=student_item_dict['student_id'], points_possible=points_possible, points_override=points_override, ) logger.exception(msg) raise SubmissionInternalError(msg) else: msg = ( u"Score overridden for item {item_id} in course {course_id} for student {student_id}" u" points_possible {points_possible} points_override {points_override}" ).format( item_id=student_item_dict['item_id'], course_id=student_item_dict['course_id'], student_id=student_item_dict['student_id'], points_possible=points_possible, points_override=points_override, ) logger.info(msg)
def test_override_highest_with_score(self): item = StudentItem.objects.create( student_id="score_test_student", course_id="score_test_course", item_id="i4x://mycourse/special_presentation", ) # Override score after a non-reset score submission = Submission.objects.create( student_item=item, attempt_number=1, ) Score.objects.create( student_item=item, submission=submission, points_earned=1, points_possible=15, ) Score.create_override_score(item, 5, 15) highest = ScoreSummary.objects.get(student_item=item).highest self.assertEqual(highest.points_earned, 5) self.assertEqual(highest.points_possible, 15)