diff --git a/common/lib/xmodule/xmodule/combined_open_ended_rubric.py b/common/lib/xmodule/xmodule/combined_open_ended_rubric.py index a9fd027ddf..4861a15dbc 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_rubric.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_rubric.py @@ -10,6 +10,15 @@ class CombinedOpenEndedRubric: self.has_score = False self.view_only = view_only + ''' + render_rubric: takes in an xml string and outputs the corresponding + html for that xml, given the type of rubric we're generating + Input: + rubric_xml: an string that has not been parsed into xml that + represents this particular rubric + Output: + html: the html that corresponds to the xml given + ''' def render_rubric(self, rubric_xml): try: rubric_categories = self.extract_categories(rubric_xml) @@ -34,11 +43,9 @@ class CombinedOpenEndedRubric: {text: "Option 3 Name", points: 2]}] ''' - if element.tag != 'rubric': - raise Exception("[extract_categories] Expected a tag: got {0} instead".format(element.tag)) - categorylist = list(element) + element = etree.fromstring(element) categories = [] - for category in categorylist: + for category in element: if category.tag != 'category': raise Exception("[extract_categories] Expected a tag: got {0} instead".format(category.tag)) else: diff --git a/common/lib/xmodule/xmodule/open_ended_module.py b/common/lib/xmodule/xmodule/open_ended_module.py index 11f96c9848..4033d140dd 100644 --- a/common/lib/xmodule/xmodule/open_ended_module.py +++ b/common/lib/xmodule/xmodule/open_ended_module.py @@ -382,7 +382,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild): rubric_feedback="" feedback = self._convert_longform_feedback_to_html(response_items) if response_items['rubric_scores_complete']==True: - rubric_feedback = CombinedOpenEndedRubric.render_rubric(response_items['rubric_xml']) + rubric_renderer = CombinedOpenEndedRubric(True) + rubric_feedback = rubric_renderer.render_rubric(response_items['rubric_xml']) if not response_items['success']: return system.render_template("open_ended_error.html", diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 940b61c557..4a7e86e134 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -122,7 +122,9 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): if self.state == self.INITIAL: return '' - rubric_html = CombinedOpenEndedRubric.render_rubric(self.rubric) + rubric_renderer = CombinedOpenEndedRubric(True) + + rubric_html = rubric_renderer.render_rubric(self.rubric) # we'll render it context = {'rubric': rubric_html, diff --git a/lms/djangoapps/open_ended_grading/staff_grading_service.py b/lms/djangoapps/open_ended_grading/staff_grading_service.py index feb5add72e..c684fa1d95 100644 --- a/lms/djangoapps/open_ended_grading/staff_grading_service.py +++ b/lms/djangoapps/open_ended_grading/staff_grading_service.py @@ -264,8 +264,7 @@ def _get_next(course_id, grader_id, location): response_json = json.loads(response) rubric = response_json['rubric'] rubric_renderer = CombinedOpenEndedRubric(False) - rubric_xml = etree.XML(rubric) - rubric_html = rubric_renderer.render_rubric(rubric_xml) + rubric_html = rubric_renderer.render_rubric(rubric) response_json['rubric'] = rubric_html return json.dumps(response_json) except GradingServiceError: