From 24689024fd28c35130d7d4ff22a416155e4c0a57 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Mon, 7 Jan 2013 13:32:59 -0500 Subject: [PATCH] Refactor open ended module --- .../lib/xmodule/xmodule/open_ended_module.py | 54 ------------------- common/lib/xmodule/xmodule/openendedchild.py | 38 +++++++++++++ .../xmodule/xmodule/self_assessment_module.py | 41 -------------- 3 files changed, 38 insertions(+), 95 deletions(-) diff --git a/common/lib/xmodule/xmodule/open_ended_module.py b/common/lib/xmodule/xmodule/open_ended_module.py index b19ed4aa27..de24d30502 100644 --- a/common/lib/xmodule/xmodule/open_ended_module.py +++ b/common/lib/xmodule/xmodule/open_ended_module.py @@ -411,7 +411,6 @@ class OpenEndedModule(openendedchild.OpenEndedChild): } ''' handlers = { - 'problem_get': self.get_problem, 'save_answer': self.save_answer, 'score_update': self.update_score, 'save_post_assessment' : self.message_post, @@ -429,23 +428,6 @@ class OpenEndedModule(openendedchild.OpenEndedChild): }) return json.dumps(d, cls=ComplexEncoder) - def get_problem(self, get, system): - return self.get_html(system) - - def reset_problem(self, get, system): - 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 @@ -483,19 +465,6 @@ class OpenEndedModule(openendedchild.OpenEndedChild): return dict() # No AJAX return is needed - def change_state(self, new_state): - """ - A centralized place for state changes--allows for hooks. If the - current state matches the old state, don't run any hooks. - """ - if self.state == new_state: - return - - self.state = new_state - - if self.state == self.DONE: - self.attempts += 1 - def get_html(self, system): #set context variables and render template if self.state != self.INITIAL: @@ -525,29 +494,6 @@ class OpenEndedModule(openendedchild.OpenEndedChild): html = system.render_template('open_ended.html', context) return html - def get_progress(self): - ''' - For now, just return last score / max_score - ''' - if self._max_score > 0: - try: - return Progress(self.get_score()['score'], self._max_score) - except Exception as err: - log.exception("Got bad progress") - 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): """ Module for adding self assessment questions to courses diff --git a/common/lib/xmodule/xmodule/openendedchild.py b/common/lib/xmodule/xmodule/openendedchild.py index e8800d27dd..e152123c37 100644 --- a/common/lib/xmodule/xmodule/openendedchild.py +++ b/common/lib/xmodule/xmodule/openendedchild.py @@ -206,5 +206,43 @@ class OpenEndedChild(): return {'score': score if score is not None else 0, 'total': self._max_score} + 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} + + def get_progress(self): + ''' + For now, just return last score / max_score + ''' + if self._max_score > 0: + try: + return Progress(self.get_score()['score'], self._max_score) + except Exception as err: + log.exception("Got bad progress") + return None + return None + + 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 get_html(self): + pass + + def handle_ajax(self): + pass + + diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index 864bfee7f8..728a2fd0df 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -116,18 +116,6 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): html = system.render_template('self_assessment_prompt.html', context) return html - def get_progress(self): - ''' - For now, just return last score / max_score - ''' - if self._max_score > 0: - try: - return Progress(self.get_score()['score'], self._max_score) - except Exception as err: - log.exception("Got bad progress") - return None - return None - def handle_ajax(self, dispatch, get, system): """ @@ -158,15 +146,6 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): }) return json.dumps(d, cls=ComplexEncoder) - 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 get_rubric_html(self,system): """ Return the appropriate version of the rubric, based on the state. @@ -296,7 +275,6 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): d['state'] = self.state return d - def save_hint(self, get, system): ''' Save the hint. @@ -320,25 +298,6 @@ class SelfAssessmentModule(openendedchild.OpenEndedChild): 'allow_reset': self._allow_reset()} - def reset(self, system): - """ - If resetting is allowed, reset the state. - - Returns {'success': bool, 'error': msg} - (error only present if not success) - """ - #if self.state != self.DONE: - # return self.out_of_sync_error(get) - - #if self.attempts > self.max_attempts: - # return { - # 'success': False, - # 'error': 'Too many attempts.' - # } - self.change_state(self.INITIAL) - return {'success': True} - - class SelfAssessmentDescriptor(XmlDescriptor, EditingDescriptor): """