From db7bdd84c89631c3e8974545245aea9ccc6f697c Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Thu, 1 Nov 2012 14:23:13 -0400 Subject: [PATCH] add documentation and clean up code --- .../xmodule/xmodule/self_assessment_module.py | 68 ++++++++++++++++--- 1 file changed, 58 insertions(+), 10 deletions(-) diff --git a/common/lib/xmodule/xmodule/self_assessment_module.py b/common/lib/xmodule/xmodule/self_assessment_module.py index d66cc2fbbc..d2175a4ed7 100644 --- a/common/lib/xmodule/xmodule/self_assessment_module.py +++ b/common/lib/xmodule/xmodule/self_assessment_module.py @@ -1,3 +1,9 @@ +""" +Add Self Assessment module so students can write essay, submit, then see a rubric and rate themselves. +Incredibly hacky solution to persist state and properly display information +""" + + import copy from fs.errors import ResourceNotFoundError import logging @@ -21,6 +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 def only_one(lst, default="", process=lambda x: x): @@ -60,9 +67,35 @@ class SelfAssessmentModule(XModule): XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs) + """ + Definition file should have 3 blocks -- problem, rubric, and submitmessage + Sample file: + + + + Insert problem text here. + + + Insert grading rubric here. + + + Thanks for submitting! + + + + + """ + + #Parse definition file 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]) + + #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=('