From f131b8673d7c6f93dd404d8d43e721f042c0bdea Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Fri, 4 Jan 2013 15:54:53 -0500 Subject: [PATCH] Handle multiple chained submissions --- .../xmodule/xmodule/combined_open_ended_module.py | 8 +++----- common/lib/xmodule/xmodule/open_ended_module.py | 15 ++++++++++----- .../lib/xmodule/xmodule/self_assessment_module.py | 3 +++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/common/lib/xmodule/xmodule/combined_open_ended_module.py b/common/lib/xmodule/xmodule/combined_open_ended_module.py index cb05074b34..d08eef7253 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_module.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_module.py @@ -115,8 +115,7 @@ class CombinedOpenEndedModule(XModule): elif current_task_state is None and self.current_task_number>0: last_response, last_score=self.get_last_response(self.current_task_number-1) current_task_state = ('{"state": "assessing", "version": 1, "max_score": ' + str(self._max_score) + ', ' + - '"attempts": 0, "history": [{"answer": "' + str(last_response) + '"}]}') - {"state": "done", "version": 1, "max_score": 1, "attempts": 1, "history": [{"answer": "gdgddg", "score": 0, "hint": "dfdfdf"}]} + '"attempts": 0, "created": True, "history": [{"answer": "' + str(last_response) + '"}]}') self.current_task=self_assessment_module.SelfAssessmentModule(self.system, self.location, self.current_task_parsed_xml, self.current_task_descriptor, instance_state=current_task_state) self.task_states.append(self.current_task.get_instance_state()) self.state=self.ASSESSING @@ -131,9 +130,8 @@ class CombinedOpenEndedModule(XModule): self.state=self.ASSESSING elif current_task_state is None and self.current_task_number>0: last_response, last_score=self.get_last_response(self.current_task_number-1) - current_task_state = ('{"state": "initial", "version": 1, "max_score": ' + str(self._max_score) + ', ' + - '"attempts": 0, "history": [{"answer": "' + str(last_response) + '"}]}') - {"state": "done", "version": 1, "max_score": 1, "attempts": 1, "history": [{"answer": "gdgddg", "score": 0, "hint": "dfdfdf"}]} + current_task_state = ('{"state": "assessing", "version": 1, "max_score": ' + str(self._max_score) + ', ' + + '"attempts": 0, "created": True, "history": [{"answer": "' + str(last_response) + '"}]}') self.current_task=open_ended_module.OpenEndedModule(self.system, self.location, self.current_task_parsed_xml, self.current_task_descriptor, instance_state=current_task_state) self.task_states.append(self.current_task.get_instance_state()) self.state=self.ASSESSING diff --git a/common/lib/xmodule/xmodule/open_ended_module.py b/common/lib/xmodule/xmodule/open_ended_module.py index ad338203f1..02ce31cea0 100644 --- a/common/lib/xmodule/xmodule/open_ended_module.py +++ b/common/lib/xmodule/xmodule/open_ended_module.py @@ -116,6 +116,14 @@ class OpenEndedModule(): self.state = instance_state.get('state', 'initial') + self.created = instance_state.get('created', False) + + if self.created and self.state == self.ASSESSING: + self.created=False + self.get_score(self.latest_answer(), system) + + self.created=False + self.attempts = instance_state.get('attempts', 0) self.max_attempts = int(instance_state.get('attempts', MAX_ATTEMPTS)) @@ -532,11 +540,7 @@ class OpenEndedModule(): return self.out_of_sync_error(get) # add new history element with answer and empty score and hint. - if(len(self.history)>0): - if(len(self.history[-1].keys())>1): - self.new_history_entry(get['student_answer']) - else: - get['student_answer']=self.latest_answer() + self.new_history_entry(get['student_answer']) self.get_score(get['student_answer'], system) self.change_state(self.ASSESSING) @@ -583,6 +587,7 @@ class OpenEndedModule(): 'state': self.state, 'max_score': self._max_score, 'attempts': self.attempts, + 'created' : self.created, } return json.dumps(state) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 925083c97a..56178acee4 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -107,6 +107,8 @@ class SelfAssessmentModule(): # Scores are on scale from 0 to max_score self.history = instance_state.get('history', []) + self.created = instance_state.get('created', False) + self.state = instance_state.get('state', 'initial') self.attempts = instance_state.get('attempts', 0) @@ -489,6 +491,7 @@ class SelfAssessmentModule(): 'state': self.state, 'max_score': self._max_score, 'attempts': self.attempts, + 'created' : self.created, } return json.dumps(state)