Commit d71445f9 by Vik Paruchuri Committed by Victor Shnayder

Add rubric field to open ended response

parent 565f502c
...@@ -1846,9 +1846,25 @@ class OpenEndedResponse(LoncapaResponse): ...@@ -1846,9 +1846,25 @@ class OpenEndedResponse(LoncapaResponse):
#Look for tag named openendedparam that encapsulates all grader settings #Look for tag named openendedparam that encapsulates all grader settings
oeparam = self.xml.find('openendedparam') oeparam = self.xml.find('openendedparam')
prompt=self.xml.find('prompt') prompt=self.xml.find('prompt')
rubric=self.xml.find('rubric')
self._parse_openendedresponse_xml(oeparam,prompt) self._parse_openendedresponse_xml(oeparam,prompt)
def _parse_openendedresponse_xml(self,oeparam,prompt): def stringify_children(self,node,strip_tags=True):
"""
Modify code from stringify_children in xmodule. Didn't import directly in order to avoid capa depending
on xmodule (seems to be avoided in code)
"""
parts=[node.text]
[parts.append((etree.tostring(p, with_tail=True))) for p in node.getchildren()]
node_string=' '.join(parts)
#Strip html tags from prompt. This may need to be removed in order to display prompt to instructors properly.
if strip_tags:
node_string=re.sub('<[^<]+?>', '', node_string)
return node_string
def _parse_openendedresponse_xml(self,oeparam,prompt,rubric):
''' '''
Parse OpenEndedResponse XML: Parse OpenEndedResponse XML:
self.initial_display self.initial_display
...@@ -1858,15 +1874,8 @@ class OpenEndedResponse(LoncapaResponse): ...@@ -1858,15 +1874,8 @@ class OpenEndedResponse(LoncapaResponse):
self.answer - What to display when show answer is clicked self.answer - What to display when show answer is clicked
''' '''
# Note that OpenEndedResponse is agnostic to the specific contents of grader_payload # Note that OpenEndedResponse is agnostic to the specific contents of grader_payload
prompt_string=self.stringify_children(prompt)
#Modify code from stringify_children in xmodule. Didn't import directly in order to avoid capa depending rubric_string=self.stringify_children(rubric)
#on xmodule (seems to be avoided in code)
prompt_parts=[prompt.text]
[prompt_parts.append((etree.tostring(p, with_tail=True))) for p in prompt.getchildren()]
prompt_string=' '.join(prompt_parts)
#Strip html tags from prompt. This may need to be removed in order to display prompt to instructors properly.
prompt_string=re.sub('<[^<]+?>', '', prompt_string)
grader_payload = oeparam.find('grader_payload') grader_payload = oeparam.find('grader_payload')
grader_payload = grader_payload.text if grader_payload is not None else '' grader_payload = grader_payload.text if grader_payload is not None else ''
...@@ -1879,7 +1888,8 @@ class OpenEndedResponse(LoncapaResponse): ...@@ -1879,7 +1888,8 @@ class OpenEndedResponse(LoncapaResponse):
grader_payload.update({ grader_payload.update({
'location' : location, 'location' : location,
'course_id' : "{0}/{1}".format(org,course), 'course_id' : "{0}/{1}".format(org,course),
'prompt' : prompt_string 'prompt' : prompt_string,
'rubric' : rubric_string,
}) })
grader_payload=json.dumps(grader_payload) grader_payload=json.dumps(grader_payload)
except Exception as err: except Exception as err:
......
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