Handle multiple chained submissions
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user