store feedback in dictionary and only parse when needed
This commit is contained in:
@@ -30,6 +30,8 @@ from xmodule.modulestore import Location
|
||||
from capa.util import *
|
||||
import openendedchild
|
||||
|
||||
from mitxmako.shortcuts import render_to_string
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
log = logging.getLogger("mitx.courseware")
|
||||
@@ -209,8 +211,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
|
||||
return True
|
||||
|
||||
def _update_score(self, score_msg, queuekey, system):
|
||||
score_msg = self._parse_score_msg(score_msg, system)
|
||||
if not score_msg['valid']:
|
||||
new_score_msg = self._parse_score_msg(score_msg)
|
||||
if not new_score_msg['valid']:
|
||||
score_msg['feedback'] = 'Invalid grader reply. Please contact the course staff.'
|
||||
|
||||
self.record_latest_score(score_msg['score'])
|
||||
@@ -317,7 +319,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
|
||||
|
||||
return u"\n".join([feedback_list_part1,feedback_list_part2])
|
||||
|
||||
def _format_feedback(self, response_items, system):
|
||||
def _format_feedback(self, response_items):
|
||||
"""
|
||||
Input:
|
||||
Dictionary called feedback. Must contain keys seen below.
|
||||
@@ -331,7 +333,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
|
||||
return system.render_template("open_ended_error.html",
|
||||
{'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'],
|
||||
'score': "{0} / {1}".format(response_items['score'], self.max_score()),
|
||||
'feedback': feedback,
|
||||
@@ -340,7 +342,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
|
||||
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
|
||||
{ 'correct': True/False,
|
||||
@@ -373,12 +375,18 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
|
||||
.format(tag))
|
||||
return fail
|
||||
|
||||
feedback = self._format_feedback(score_result, system)
|
||||
feedback = self._format_feedback(score_result)
|
||||
self.submission_id=score_result['submission_id']
|
||||
self.grader_id=score_result['grader_id']
|
||||
|
||||
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):
|
||||
correct=False
|
||||
if(isinstance(score,(int, long, float, complex))):
|
||||
|
||||
Reference in New Issue
Block a user