From ef27788cf5cdf784f746a1dbf787f2872bf845cd Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Fri, 4 Jan 2013 13:14:58 -0500 Subject: [PATCH] Initial display for open ended problem --- .../lib/xmodule/xmodule/open_ended_module.py | 50 +++++++++++++++---- lms/templates/open_ended.html | 10 ++-- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/common/lib/xmodule/xmodule/open_ended_module.py b/common/lib/xmodule/xmodule/open_ended_module.py index 3da03520ab..8edf7e0828 100644 --- a/common/lib/xmodule/xmodule/open_ended_module.py +++ b/common/lib/xmodule/xmodule/open_ended_module.py @@ -573,25 +573,26 @@ class OpenEndedModule(): Implement special logic: handle queueing state, and default input. """ # if no student input yet, then use the default input given by the problem - if not self.value: - self.value = self.xml.text + latest_answer=self.latest_answer() + if latest_answer is None: + value = self.initial_display # Check if problem has been queued self.queue_len = 0 # Flag indicating that the problem has been queued, 'msg' is length of queue - if self.status == 'incomplete': - self.status = 'queued' - self.queue_len = self.msg - self.msg = self.submitted_msg + if self.state == self.ASSESSING: + #self.queue_len = self.msg + #self.msg = self.submitted_msg + pass context={'rows' : 30, 'cols' : 80, 'hidden' : '', 'id' : 'open_ended', - 'msg' : self.msg, - 'status' : self.status, + 'msg' : "This is a message", + 'state' : self.state, 'queue_len' : self.queue_len, - 'value' : self.value, + 'value' : value, } html=system.render_template("open_ended.html", context) @@ -624,6 +625,37 @@ class OpenEndedModule(): } return json.dumps(state) + def latest_answer(self): + """None if not available""" + if not self.history: + return None + return self.history[-1].get('answer') + + def latest_score(self): + """None if not available""" + if not self.history: + return None + return self.history[-1].get('score') + + def latest_hint(self): + """None if not available""" + if not self.history: + return None + return self.history[-1].get('hint') + + def new_history_entry(self, answer): + self.history.append({'answer': answer}) + + def record_latest_score(self, score): + """Assumes that state is right, so we're adding a score to the latest + history element""" + self.history[-1]['score'] = score + + def record_latest_hint(self, hint): + """Assumes that state is right, so we're adding a score to the latest + history element""" + self.history[-1]['hint'] = hint + class OpenEndedDescriptor(XmlDescriptor, EditingDescriptor): """ diff --git a/lms/templates/open_ended.html b/lms/templates/open_ended.html index c42ad73faf..a6ffc684da 100644 --- a/lms/templates/open_ended.html +++ b/lms/templates/open_ended.html @@ -1,4 +1,4 @@ -
+
- % if status == 'unsubmitted': + % if state == 'initial': Unanswered - % elif status == 'correct': + % elif state == 'done': Correct - % elif status == 'incorrect': + % elif state == 'incorrect': Incorrect - % elif status == 'queued': + % elif state == 'assessing': Submitted for grading % endif