diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py
index d2175a4ed7..003d3bf36f 100644
--- a/common/lib/xmodule/xmodule/self_assessment_module.py
+++ b/common/lib/xmodule/xmodule/self_assessment_module.py
@@ -3,7 +3,6 @@ Add Self Assessment module so students can write essay, submit, then see a rubri
Incredibly hacky solution to persist state and properly display information
"""
-
import copy
from fs.errors import ResourceNotFoundError
import logging
@@ -28,7 +27,7 @@ from xmodule.contentstore.content import XASSET_SRCREF_PREFIX, StaticContent
log = logging.getLogger("mitx.courseware")
#Set the default number of max attempts. Should be 1 for production
-max_attempts=100
+max_attempts = 100
def only_one(lst, default="", process=lambda x: x):
"""
@@ -43,6 +42,7 @@ def only_one(lst, default="", process=lambda x: x):
else:
raise Exception('Malformed XML')
+
class ComplexEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, complex):
@@ -87,48 +87,48 @@ class SelfAssessmentModule(XModule):
"""
#Parse definition file
- dom2=etree.fromstring("" + self.definition['data'] + "")
+ dom2 = etree.fromstring("" + self.definition['data'] + "")
#Extract problem, submission message and rubric from definition file
- self.rubric="
" + ''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))])
- self.problem=''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))])
- self.submit_message=etree.tostring(dom2.xpath('submitmessage')[0])
+ self.rubric = "
" + ''.join([etree.tostring(child) for child in only_one(dom2.xpath('rubric'))])
+ self.problem = ''.join([etree.tostring(child) for child in only_one(dom2.xpath('problem'))])
+ self.submit_message = etree.tostring(dom2.xpath('submitmessage')[0])
#Forms to append to problem and rubric that capture student responses.
#Do not change ids and names, as javascript (selfassessment/display.coffee) depends on them
- problem_form=('
').format(system.ajax_url)
+ problem_form = ('
').format(system.ajax_url)
- rubric_form=('
Please assess your performance given the above rubric:
'
- '
').format(system.ajax_url)
+ rubric_form = ('
Please assess your performance given the above rubric:
'
+ '
').format(system.ajax_url)
#Combine problem, rubric, and the forms
- self.problem=''.join([self.problem,problem_form])
- self.rubric=''.join([self.rubric,rubric_form])
+ self.problem = ''.join([self.problem, problem_form])
+ self.rubric = ''.join([self.rubric, rubric_form])
#Display the problem to the student to begin with
self.html = self.problem
#Initialize variables
- self.answer=""
- self.score=0
- self.top_score=1
+ self.answer = ""
+ self.score = 0
+ self.top_score = 1
self.attempts = 0
- self.correctness="incorrect"
- self.done=False
+ self.correctness = "incorrect"
+ self.done = False
self.max_attempts = self.metadata.get('attempts', None)
#Pull variables from instance state if available
if self.max_attempts is not None:
self.max_attempts = int(self.max_attempts)
else:
- self.max_attempts=max_attempts
+ self.max_attempts = max_attempts
if instance_state is not None:
instance_state = json.loads(instance_state)
@@ -138,19 +138,19 @@ class SelfAssessmentModule(XModule):
self.attempts = instance_state['attempts']
if instance_state is not None and 'student_answers' in instance_state:
- self.answer=instance_state['student_answers']
+ self.answer = instance_state['student_answers']
if instance_state is not None and 'done' in instance_state:
- self.done=instance_state['done']
+ self.done = instance_state['done']
if instance_state is not None and 'correct_map' in instance_state:
if 'self_assess' in instance_state['correct_map']:
- self.score=instance_state['correct_map']['self_assess']['npoints']
- self.correctness=instance_state['correct_map']['self_assess']['correctness']
+ self.score = instance_state['correct_map']['self_assess']['npoints']
+ self.correctness = instance_state['correct_map']['self_assess']['correctness']
def get_score(self):
- return {'score' : self.score}
+ return {'score': self.score}
def max_score(self):
return self.top_score
@@ -183,7 +183,7 @@ class SelfAssessmentModule(XModule):
handlers = {
'sa_show': self.show_rubric,
'sa_save': self.save_problem,
- }
+ }
if dispatch not in handlers:
return 'Error'
@@ -194,20 +194,20 @@ class SelfAssessmentModule(XModule):
d.update({
'progress_changed': after != before,
'progress_status': Progress.to_js_status_str(after),
- })
+ })
return json.dumps(d, cls=ComplexEncoder)
- def show_rubric(self,get):
+ def show_rubric(self, get):
"""
After the problem is submitted, show the rubric
"""
#Check to see if attempts are less than max
- if(self.attempts