Commit 827e211a by kimth

Reveal student input at state of problem reset back to student

parent 1a02cfec
import cgi
import datetime import datetime
import dateutil import dateutil
import dateutil.parser import dateutil.parser
...@@ -236,16 +237,33 @@ class CapaModule(XModule): ...@@ -236,16 +237,33 @@ class CapaModule(XModule):
# to avoid bricking of problem as much as possible # to avoid bricking of problem as much as possible
# Presumably, student submission has corrupted LoncapaProblem HTML. # Presumably, student submission has corrupted LoncapaProblem HTML.
# So, let's try generate a fresh LoncapaProblem # First, pull down all student answers
student_answers = self.lcp.student_answers
answer_ids = student_answers.keys()
# Some inputtypes, such as dynamath, have additional "hidden" state that
# is not exposed to the student. Keep those hidden
hidden_state_keywords = ['dynamath']
for answer_id in answer_ids:
for hidden_state_keyword in hidden_state_keywords:
if answer_id.find(hidden_state_keyword) >= 0:
student_answers.pop(answer_id)
# Next, generate a fresh LoncapaProblem
self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(), self.lcp = LoncapaProblem(self.definition['data'], self.location.html_id(),
state=None, # Tabula rasa state=None, # Tabula rasa
seed=self.seed, system=self.system) seed=self.seed, system=self.system)
# Prepend a scary warning to the student # Prepend a scary warning to the student
warning = '<div class="capa_reset">' warning = '<div class="capa_reset">'
warning += '<p>Problem state was corruped by invalid input. ' warning += '<h2>Problem reset to initial state!</h2>'
warning += 'Problem reset to initial state! ' warning += '<p>Problem state was corruped by invalid submission. The submission consisted of:</p>'
warning += 'If problem persists, please contact the course staff.</p>' warning += '<ul>'
for student_answer in student_answers.values():
if student_answer != '':
warning += '<li>' + cgi.escape(student_answer) + '</li>'
warning += '</ul>'
warning += '<p>If problem persists, please contact the course staff.</p>'
warning += '</div>' warning += '</div>'
html = warning html = warning
......
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