From 4b5457c99717e3ff35154ecb9602ee94a91c1b78 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 7 Feb 2013 16:13:07 -0500 Subject: [PATCH] Fixing some rubric score errors --- .../xmodule/xmodule/combined_open_ended_modulev1.py | 7 ++++++- .../lib/xmodule/xmodule/combined_open_ended_rubric.py | 4 +++- common/lib/xmodule/xmodule/open_ended_module.py | 3 ++- common/lib/xmodule/xmodule/self_assessment_module.py | 10 ++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/common/lib/xmodule/xmodule/combined_open_ended_modulev1.py b/common/lib/xmodule/xmodule/combined_open_ended_modulev1.py index dd51e009f2..c854be3cd9 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_modulev1.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_modulev1.py @@ -441,6 +441,10 @@ class CombinedOpenEndedV1Module(): else: last_post_evaluation = task.format_feedback_with_evaluation(self.system, last_post_assessment) last_post_assessment = last_post_evaluation + rubric_scores = task._parse_score_msg(task.history[-1].get('post_assessment', ""), self.system)['rubric_scores'] + elif task_type== "selfassessment": + rubric_scores = last_post_assessment + last_post_assessment = "" last_correctness = task.is_last_response_correct() max_score = task.max_score() state = task.state @@ -465,8 +469,9 @@ class CombinedOpenEndedV1Module(): 'correct': last_correctness, 'min_score_to_attempt': min_score_to_attempt, 'max_score_to_attempt': max_score_to_attempt, + 'rubric_scores' : rubric_scores, } - + log.debug(last_response_dict) return last_response_dict def update_task_states(self): diff --git a/common/lib/xmodule/xmodule/combined_open_ended_rubric.py b/common/lib/xmodule/xmodule/combined_open_ended_rubric.py index 41838e875c..1ecdec14b7 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_rubric.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_rubric.py @@ -45,7 +45,9 @@ class CombinedOpenEndedRubric(object): return {'success' : success, 'html' : html, 'rubric_scores' : rubric_scores} def check_if_rubric_is_parseable(self, rubric_string, location, max_score_allowed, max_score): - success, rubric_feedback = self.render_rubric(rubric_string) + rubric_dict = self.render_rubric(rubric_string) + success = rubric_dict['success'] + rubric_feedback = rubric_dict['html'] if not success: error_message = "Could not parse rubric : {0} for location {1}".format(rubric_string, location.url()) log.error(error_message) diff --git a/common/lib/xmodule/xmodule/open_ended_module.py b/common/lib/xmodule/xmodule/open_ended_module.py index 4c288c90a9..d8d80cc199 100644 --- a/common/lib/xmodule/xmodule/open_ended_module.py +++ b/common/lib/xmodule/xmodule/open_ended_module.py @@ -386,6 +386,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild): rubric_feedback = "" feedback = self._convert_longform_feedback_to_html(response_items) + rubric_scores = [] if response_items['rubric_scores_complete'] == True: rubric_renderer = CombinedOpenEndedRubric(system, True) rubric_dict = rubric_renderer.render_rubric(response_items['rubric_xml']) @@ -428,7 +429,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild): correct: Correctness of submission (Boolean) score: Points to be assigned (numeric, can be float) """ - fail = {'valid': False, 'score': 0, 'feedback': ''} + fail = {'valid': False, 'score': 0, 'feedback': '', 'rubric_scores' : []} try: score_result = json.loads(score_msg) except (TypeError, ValueError): diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 6bc3e34608..a3740b1fcb 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -257,6 +257,7 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): def save_hint(self, get, system): ''' + Not used currently, as hints have been removed from the system. Save the hint. Returns a dict { 'success': bool, 'message_html': message_html, @@ -277,6 +278,15 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): 'message_html': self.get_message_html(), 'allow_reset': self._allow_reset()} + def latest_post_assessment(self, system): + latest_post_assessment = super(SelfAssessmentModule, self).latest_post_assessment(system) + try: + rubric_scores = json.loads(latest_post_assessment) + except: + log.error("Cannot parse rubric scores in self assessment module from {0}".format(latest_post_assessment)) + rubric_scores = [] + return [rubric_scores] + class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """