From 4443afecaf2450f16fb36d7c79d99cd5e91c19d3 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Wed, 27 Mar 2013 18:05:00 -0400 Subject: [PATCH] Get rid of max score on open ended modules. Auto-calculate it from the rubric instead. --- .../xmodule/xmodule/combined_open_ended_module.py | 9 ++++----- .../combined_open_ended_modulev1.py | 12 ++---------- .../combined_open_ended_rubric.py | 9 ++------- .../xmodule/templates/combinedopenended/default.yaml | 1 - 4 files changed, 8 insertions(+), 23 deletions(-) diff --git a/common/lib/xmodule/xmodule/combined_open_ended_module.py b/common/lib/xmodule/xmodule/combined_open_ended_module.py index 48fbfcced1..d389fd1c2c 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_module.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_module.py @@ -13,7 +13,7 @@ from collections import namedtuple log = logging.getLogger("mitx.courseware") V1_SETTINGS_ATTRIBUTES = ["display_name", "attempts", "is_graded", "accept_file_upload", - "skip_spelling_checks", "due", "graceperiod", "max_score"] + "skip_spelling_checks", "due", "graceperiod"] V1_STUDENT_ATTRIBUTES = ["current_task_number", "task_states", "state", "student_attempts", "ready_to_reset"] @@ -66,7 +66,6 @@ class CombinedOpenEndedFields(object): due = String(help="Date that this problem is due by", default=None, scope=Scope.settings) graceperiod = String(help="Amount of time after the due date that submissions will be accepted", default=None, scope=Scope.settings) - max_score = Integer(help="Maximum score for the problem.", default=1, scope=Scope.settings) version = VersionInteger(help="Current version number", default=DEFAULT_VERSION, scope=Scope.settings) data = String(help="XML data for the problem", scope=Scope.content) @@ -118,7 +117,7 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule): Definition file should have one or many task blocks, a rubric block, and a prompt block: Sample file: - + Blah blah rubric. @@ -190,8 +189,8 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule): def get_score(self): return self.child_module.get_score() - #def max_score(self): - # return self.child_module.max_score() + def max_score(self): + return self.child_module.max_score() def get_progress(self): return self.child_module.get_progress() 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 6fe37b9525..eaa43c0d86 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 @@ -19,10 +19,6 @@ log = logging.getLogger("mitx.courseware") # attempts specified in xml definition overrides this. MAX_ATTEMPTS = 1 -# Set maximum available number of points. -# Overriden by max_score specified in xml. -MAX_SCORE = 1 - #The highest score allowed for the overall xmodule and for each rubric point MAX_SCORE_ALLOWED = 50 @@ -88,7 +84,7 @@ class CombinedOpenEndedV1Module(): Definition file should have one or many task blocks, a rubric block, and a prompt block: Sample file: - + Blah blah rubric. @@ -153,13 +149,9 @@ class CombinedOpenEndedV1Module(): raise self.display_due_date = self.timeinfo.display_due_date - # Used for progress / grading. Currently get credit just for - # completion (doesn't matter if you self-assessed correct/incorrect). - self._max_score = self.instance_state.get('max_score', MAX_SCORE) - self.rubric_renderer = CombinedOpenEndedRubric(system, True) rubric_string = stringify_children(definition['rubric']) - self.rubric_renderer.check_if_rubric_is_parseable(rubric_string, location, MAX_SCORE_ALLOWED, self._max_score) + self._max_score = self.rubric_renderer.check_if_rubric_is_parseable(rubric_string, location, MAX_SCORE_ALLOWED) #Static data is passed to the child modules to render self.static_data = { diff --git a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_rubric.py b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_rubric.py index bceb12e444..6245d4d31c 100644 --- a/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_rubric.py +++ b/common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_rubric.py @@ -79,7 +79,7 @@ class CombinedOpenEndedRubric(object): raise RubricParsingError(error_message) return {'success': success, 'html': html, 'rubric_scores': rubric_scores} - def check_if_rubric_is_parseable(self, rubric_string, location, max_score_allowed, max_score): + def check_if_rubric_is_parseable(self, rubric_string, location, max_score_allowed): rubric_dict = self.render_rubric(rubric_string) success = rubric_dict['success'] rubric_feedback = rubric_dict['html'] @@ -101,12 +101,7 @@ class CombinedOpenEndedRubric(object): log.error(error_message) raise RubricParsingError(error_message) - if int(total) != int(max_score): - #This is a staff_facing_error - error_msg = "The max score {0} for problem {1} does not match the total number of points in the rubric {2}. Contact the learning sciences group for assistance.".format( - max_score, location, total) - log.error(error_msg) - raise RubricParsingError(error_msg) + return int(total) def extract_categories(self, element): ''' diff --git a/common/lib/xmodule/xmodule/templates/combinedopenended/default.yaml b/common/lib/xmodule/xmodule/templates/combinedopenended/default.yaml index f2aba0e18b..74a764dea1 100644 --- a/common/lib/xmodule/xmodule/templates/combinedopenended/default.yaml +++ b/common/lib/xmodule/xmodule/templates/combinedopenended/default.yaml @@ -2,7 +2,6 @@ metadata: display_name: Open Ended Response max_attempts: 1 - max_score: 1 is_graded: False version: 1 display_name: Open Ended Response