From 4ea9c738a352d7701d717545412d7c8de1312065 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 3 Jan 2013 14:24:23 -0500 Subject: [PATCH] Fix state transitions --- .../xmodule/xmodule/combined_open_ended_module.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/common/lib/xmodule/xmodule/combined_open_ended_module.py b/common/lib/xmodule/xmodule/combined_open_ended_module.py index 04f848f306..50d1a7df0c 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_module.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_module.py @@ -114,12 +114,13 @@ class CombinedOpenEndedModule(XModule): return True def get_html(self): + self.update_task_states() html = self.current_task.get_html(self.system) return_html = rewrite_links(html, self.rewrite_content_links) - self.update_task_states() return return_html def update_task_states(self): + changed=False self.task_states[len(self.task_states)-1] = self.current_task.get_instance_state() current_task_state=json.loads(self.task_states[len(self.task_states)-1]) if current_task_state['state']==self.DONE: @@ -129,13 +130,19 @@ class CombinedOpenEndedModule(XModule): self.current_task_number=self.current_task_number-1 else: self.state=self.INTERMEDIATE_DONE + changed=True self.setup_next_task() + return changed + def update_task_states_ajax(self,return_html): + changed=self.update_task_states() + if changed(): + return_html=self.get_html() + return return_html def handle_ajax(self, dispatch, get): return_html = self.current_task.handle_ajax(dispatch,get, self.system) - self.update_task_states() - return return_html + return self.update_task_states_ajax(return_html) def get_instance_state(self): """