Commit 79c8efcb by Diana Huang

Update the rubric renderer

parent bb867ba3
...@@ -10,6 +10,15 @@ class CombinedOpenEndedRubric: ...@@ -10,6 +10,15 @@ class CombinedOpenEndedRubric:
self.has_score = False self.has_score = False
self.view_only = view_only 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): def render_rubric(self, rubric_xml):
try: try:
rubric_categories = self.extract_categories(rubric_xml) rubric_categories = self.extract_categories(rubric_xml)
...@@ -34,11 +43,9 @@ class CombinedOpenEndedRubric: ...@@ -34,11 +43,9 @@ class CombinedOpenEndedRubric:
{text: "Option 3 Name", points: 2]}] {text: "Option 3 Name", points: 2]}]
''' '''
if element.tag != 'rubric': element = etree.fromstring(element)
raise Exception("[extract_categories] Expected a <rubric> tag: got {0} instead".format(element.tag))
categorylist = list(element)
categories = [] categories = []
for category in categorylist: for category in element:
if category.tag != 'category': if category.tag != 'category':
raise Exception("[extract_categories] Expected a <category> tag: got {0} instead".format(category.tag)) raise Exception("[extract_categories] Expected a <category> tag: got {0} instead".format(category.tag))
else: else:
......
...@@ -382,7 +382,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild): ...@@ -382,7 +382,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
rubric_feedback="" rubric_feedback=""
feedback = self._convert_longform_feedback_to_html(response_items) feedback = self._convert_longform_feedback_to_html(response_items)
if response_items['rubric_scores_complete']==True: 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']: if not response_items['success']:
return system.render_template("open_ended_error.html", return system.render_template("open_ended_error.html",
......
...@@ -122,7 +122,9 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): ...@@ -122,7 +122,9 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild):
if self.state == self.INITIAL: if self.state == self.INITIAL:
return '' return ''
rubric_html = CombinedOpenEndedRubric.render_rubric(self.rubric) rubric_renderer = CombinedOpenEndedRubric(True)
rubric_html = rubric_renderer.render_rubric(self.rubric)
# we'll render it # we'll render it
context = {'rubric': rubric_html, context = {'rubric': rubric_html,
......
...@@ -264,8 +264,7 @@ def _get_next(course_id, grader_id, location): ...@@ -264,8 +264,7 @@ def _get_next(course_id, grader_id, location):
response_json = json.loads(response) response_json = json.loads(response)
rubric = response_json['rubric'] rubric = response_json['rubric']
rubric_renderer = CombinedOpenEndedRubric(False) rubric_renderer = CombinedOpenEndedRubric(False)
rubric_xml = etree.XML(rubric) rubric_html = rubric_renderer.render_rubric(rubric)
rubric_html = rubric_renderer.render_rubric(rubric_xml)
response_json['rubric'] = rubric_html response_json['rubric'] = rubric_html
return json.dumps(response_json) return json.dumps(response_json)
except GradingServiceError: except GradingServiceError:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment