diff --git a/common/lib/xmodule/xmodule/open_ended_module.py b/common/lib/xmodule/xmodule/open_ended_module.py index 2cc436a808..7127ef2388 100644 --- a/common/lib/xmodule/xmodule/open_ended_module.py +++ b/common/lib/xmodule/xmodule/open_ended_module.py @@ -484,7 +484,6 @@ class OpenEndedModule(): log.debug(get) handlers = { 'problem_get': self.get_problem, - 'problem_reset': self.reset_problem, 'save_answer': self.save_answer, 'score_update': self.update_score, 'save_post_assessment' : self.message_post, @@ -509,6 +508,16 @@ class OpenEndedModule(): self.change_state(self.INITIAL) return {'success': True} + def out_of_sync_error(self, get, msg=''): + """ + return dict out-of-sync error message, and also log. + """ + log.warning("Assessment module state out sync. state: %r, get: %r. %s", + self.state, get, msg) + return {'success': False, + 'error': 'The problem state got out-of-sync'} + + def save_answer(self, get, system): if self.attempts > self.max_attempts: # If too many attempts, prevent student from saving answer and @@ -658,6 +667,16 @@ class OpenEndedModule(): return None return None + def reset(self, system): + """ + If resetting is allowed, reset the state. + + Returns {'success': bool, 'error': msg} + (error only present if not success) + """ + self.change_state(self.INITIAL) + return {'success': True} + class OpenEndedDescriptor(XmlDescriptor, EditingDescriptor): """ diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index ee35ff801c..925083c97a 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -283,7 +283,6 @@ class SelfAssessmentModule(): 'save_answer': self.save_answer, 'save_assessment': self.save_assessment, 'save_post_assessment': self.save_hint, - 'reset': self.reset, } if dispatch not in handlers: