Commit c2a285e0 by Vik Paruchuri

store feedback in dictionary and only parse when needed

parent 3ea59ef3
...@@ -30,6 +30,8 @@ from xmodule.modulestore import Location ...@@ -30,6 +30,8 @@ from xmodule.modulestore import Location
from capa.util import * from capa.util import *
import openendedchild import openendedchild
from mitxmako.shortcuts import render_to_string
from datetime import datetime from datetime import datetime
log = logging.getLogger("mitx.courseware") log = logging.getLogger("mitx.courseware")
...@@ -209,8 +211,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild): ...@@ -209,8 +211,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
return True return True
def _update_score(self, score_msg, queuekey, system): def _update_score(self, score_msg, queuekey, system):
score_msg = self._parse_score_msg(score_msg, system) new_score_msg = self._parse_score_msg(score_msg)
if not score_msg['valid']: if not new_score_msg['valid']:
score_msg['feedback'] = 'Invalid grader reply. Please contact the course staff.' score_msg['feedback'] = 'Invalid grader reply. Please contact the course staff.'
self.record_latest_score(score_msg['score']) self.record_latest_score(score_msg['score'])
...@@ -317,7 +319,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild): ...@@ -317,7 +319,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
return u"\n".join([feedback_list_part1,feedback_list_part2]) return u"\n".join([feedback_list_part1,feedback_list_part2])
def _format_feedback(self, response_items, system): def _format_feedback(self, response_items):
""" """
Input: Input:
Dictionary called feedback. Must contain keys seen below. Dictionary called feedback. Must contain keys seen below.
...@@ -331,7 +333,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild): ...@@ -331,7 +333,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
return system.render_template("open_ended_error.html", return system.render_template("open_ended_error.html",
{'errors' : feedback}) {'errors' : feedback})
feedback_template = system.render_template("open_ended_feedback.html", { feedback_template = render_to_string("open_ended_feedback.html", {
'grader_type': response_items['grader_type'], 'grader_type': response_items['grader_type'],
'score': "{0} / {1}".format(response_items['score'], self.max_score()), 'score': "{0} / {1}".format(response_items['score'], self.max_score()),
'feedback': feedback, 'feedback': feedback,
...@@ -340,7 +342,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild): ...@@ -340,7 +342,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
return feedback_template return feedback_template
def _parse_score_msg(self, score_msg, system): def _parse_score_msg(self, score_msg):
""" """
Grader reply is a JSON-dump of the following dict Grader reply is a JSON-dump of the following dict
{ 'correct': True/False, { 'correct': True/False,
...@@ -373,12 +375,18 @@ class OpenEndedModule(openendedchild.OpenEndedChild): ...@@ -373,12 +375,18 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
.format(tag)) .format(tag))
return fail return fail
feedback = self._format_feedback(score_result, system) feedback = self._format_feedback(score_result)
self.submission_id=score_result['submission_id'] self.submission_id=score_result['submission_id']
self.grader_id=score_result['grader_id'] self.grader_id=score_result['grader_id']
return {'valid' : True, 'score' : score_result['score'], 'feedback' : feedback} return {'valid' : True, 'score' : score_result['score'], 'feedback' : feedback}
def latest_post_assessment(self):
"""None if not available"""
if not self.history:
return ""
return self._parse_score_msg(self.history[-1].get('post_assessment', ""))
def is_submission_correct(self, score): def is_submission_correct(self, score):
correct=False correct=False
if(isinstance(score,(int, long, float, complex))): if(isinstance(score,(int, long, float, complex))):
......
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