Commit adcbfbb6 by Vik Paruchuri

Fix reset

parent b13f9479
...@@ -142,6 +142,12 @@ class CombinedOpenEndedModule(XModule): ...@@ -142,6 +142,12 @@ class CombinedOpenEndedModule(XModule):
current_task_state=self.task_states[self.current_task_number] current_task_state=self.task_states[self.current_task_number]
self.current_task_xml=self.task_xml[self.current_task_number] self.current_task_xml=self.task_xml[self.current_task_number]
if self.current_task_number>0:
self.allow_reset=self.check_allow_reset()
if self.allow_reset:
self.current_task_number=self.current_task_number-1
current_task_type=self.get_tag_name(self.current_task_xml) current_task_type=self.get_tag_name(self.current_task_xml)
children=self.child_modules() children=self.child_modules()
...@@ -149,11 +155,6 @@ class CombinedOpenEndedModule(XModule): ...@@ -149,11 +155,6 @@ class CombinedOpenEndedModule(XModule):
self.current_task_descriptor=children['descriptors'][current_task_type](self.system) self.current_task_descriptor=children['descriptors'][current_task_type](self.system)
etree_xml=etree.fromstring(self.current_task_xml) etree_xml=etree.fromstring(self.current_task_xml)
if self.current_task_number>0:
self.allow_reset=self.check_allow_reset()
if self.allow_reset:
return False
self.current_task_parsed_xml=self.current_task_descriptor.definition_from_xml(etree_xml,self.system) self.current_task_parsed_xml=self.current_task_descriptor.definition_from_xml(etree_xml,self.system)
if current_task_state is None and self.current_task_number==0: if current_task_state is None and self.current_task_number==0:
self.current_task=children['modules'][current_task_type](self.system, self.location, self.current_task_parsed_xml, self.current_task_descriptor, self.static_data) self.current_task=children['modules'][current_task_type](self.system, self.location, self.current_task_parsed_xml, self.current_task_descriptor, self.static_data)
...@@ -175,6 +176,7 @@ class CombinedOpenEndedModule(XModule): ...@@ -175,6 +176,7 @@ class CombinedOpenEndedModule(XModule):
return True return True
def check_allow_reset(self): def check_allow_reset(self):
if not self.allow_reset:
if self.current_task_number>0: if self.current_task_number>0:
last_response_data=self.get_last_response(self.current_task_number-1) last_response_data=self.get_last_response(self.current_task_number-1)
current_response_data=self.get_current_attributes(self.current_task_number) current_response_data=self.get_current_attributes(self.current_task_number)
...@@ -198,6 +200,7 @@ class CombinedOpenEndedModule(XModule): ...@@ -198,6 +200,7 @@ class CombinedOpenEndedModule(XModule):
'task_number' : self.current_task_number+1, 'task_number' : self.current_task_number+1,
'status' : self.get_status(), 'status' : self.get_status(),
} }
log.debug(context)
return context return context
...@@ -268,12 +271,10 @@ class CombinedOpenEndedModule(XModule): ...@@ -268,12 +271,10 @@ class CombinedOpenEndedModule(XModule):
def update_task_states(self): def update_task_states(self):
changed=False changed=False
local_task_number=self.current_task_number if not self.allow_reset:
if self.allow_reset: self.task_states[self.current_task_number] = self.current_task.get_instance_state()
local_task_number=local_task_number-1 current_task_state=json.loads(self.task_states[self.current_task_number])
self.task_states[local_task_number] = self.current_task.get_instance_state() if current_task_state['state']==self.DONE:
current_task_state=json.loads(self.task_states[local_task_number])
if current_task_state['state']==self.DONE and not self.allow_reset:
self.current_task_number+=1 self.current_task_number+=1
if self.current_task_number>=(len(self.task_xml)): if self.current_task_number>=(len(self.task_xml)):
self.state=self.DONE self.state=self.DONE
...@@ -335,6 +336,7 @@ class CombinedOpenEndedModule(XModule): ...@@ -335,6 +336,7 @@ class CombinedOpenEndedModule(XModule):
(error only present if not success) (error only present if not success)
""" """
if self.state != self.DONE: if self.state != self.DONE:
if not self.allow_reset:
return self.out_of_sync_error(get) return self.out_of_sync_error(get)
if self.attempts > self.max_attempts: if self.attempts > self.max_attempts:
...@@ -350,6 +352,7 @@ class CombinedOpenEndedModule(XModule): ...@@ -350,6 +352,7 @@ class CombinedOpenEndedModule(XModule):
self.current_task.reset(self.system) self.current_task.reset(self.system)
self.task_states[self.current_task_number]=self.current_task.get_instance_state() self.task_states[self.current_task_number]=self.current_task.get_instance_state()
self.current_task_number=0 self.current_task_number=0
self.allow_reset=False
self.setup_next_task() self.setup_next_task()
return {'success': True, 'html' : self.get_html_nonsystem()} return {'success': True, 'html' : self.get_html_nonsystem()}
......
...@@ -187,7 +187,7 @@ class @CombinedOpenEnded ...@@ -187,7 +187,7 @@ class @CombinedOpenEnded
reset: (event) => reset: (event) =>
event.preventDefault() event.preventDefault()
if @child_state == 'done' if @child_state == 'done' or @allow_reset=="True"
$.postWithPrefix "#{@ajax_url}/reset", {}, (response) => $.postWithPrefix "#{@ajax_url}/reset", {}, (response) =>
if response.success if response.success
@answer_area.val('') @answer_area.val('')
...@@ -196,6 +196,7 @@ class @CombinedOpenEnded ...@@ -196,6 +196,7 @@ class @CombinedOpenEnded
@message_wrapper.html('') @message_wrapper.html('')
@child_state = 'initial' @child_state = 'initial'
@combined_open_ended.after(response.html).remove() @combined_open_ended.after(response.html).remove()
@allow_reset="False"
@reinitialize(@element) @reinitialize(@element)
@rebind() @rebind()
@reset_button.hide() @reset_button.hide()
......
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