From e47e60f68b0146a9922d92547c8df18343ef6a15 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Sat, 16 Nov 2013 10:30:05 -0500 Subject: [PATCH 1/2] Assign a score of 0 to tasks with no attempts --- .../combined_open_ended_modulev1.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py index 8e8d33ad08..5c0a3b16ff 100644 --- a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py +++ b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py @@ -259,7 +259,11 @@ class CombinedOpenEndedV1Module(): return (0, 0, state_values[self.INITITIAL], idx) final_child_state = json.loads(task_states[-1]) - best_score = max(attempt.get('score', 0) for attempt in final_child_state.get('child_history', [])) + scores = [attempt.get('score', 0) for attempt in final_child_state.get('child_history', [])] + if scores: + best_score = max(scores) + else: + best_score = 0 return ( len(task_states), best_score, From 43c0210889d3883bd822a3c75285fc64cc8e34db Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Sat, 16 Nov 2013 10:53:44 -0500 Subject: [PATCH 2/2] Use correct set of OpenEndedChild states --- .../combined_open_ended_modulev1.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py index 5c0a3b16ff..4a1715c48d 100644 --- a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py +++ b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py @@ -11,6 +11,7 @@ from xmodule.open_ended_grading_classes import open_ended_module from functools import partial from .combined_open_ended_rubric import CombinedOpenEndedRubric, GRADER_TYPE_IMAGE_DICT, HUMAN_GRADER_TYPE, LEGEND_LIST from xmodule.open_ended_grading_classes.peer_grading_service import PeerGradingService, MockPeerGradingService, GradingServiceError +from xmodule.open_ended_grading_classes.openendedchild import OpenEndedChild log = logging.getLogger("mitx.courseware") @@ -249,14 +250,14 @@ class CombinedOpenEndedV1Module(): idx, task_states = idx_task_states state_values = { - self.INITIAL: 0, - self.ASSESSING: 1, - self.INTERMEDIATE_DONE: 2, - self.DONE: 3 + OpenEndedChild.INITIAL: 0, + OpenEndedChild.ASSESSING: 1, + OpenEndedChild.POST_ASSESSMENT: 2, + OpenEndedChild.DONE: 3 } if not task_states: - return (0, 0, state_values[self.INITITIAL], idx) + return (0, 0, state_values[OpenEndedChild.INITIAL], idx) final_child_state = json.loads(task_states[-1]) scores = [attempt.get('score', 0) for attempt in final_child_state.get('child_history', [])] @@ -267,7 +268,7 @@ class CombinedOpenEndedV1Module(): return ( len(task_states), best_score, - state_values[final_child_state.get('child_state', self.INITIAL)], + state_values.get(final_child_state.get('child_state', OpenEndedChild.INITIAL), 0), idx )