Commit 2891ea4b by Vik Paruchuri

Convert away from self.system to just using system

parent 6e7dae4f
...@@ -28,6 +28,7 @@ from .stringify import stringify_children ...@@ -28,6 +28,7 @@ from .stringify import stringify_children
from .x_module import XModule from .x_module import XModule
from .xml_module import XmlDescriptor from .xml_module import XmlDescriptor
from xmodule.modulestore import Location from xmodule.modulestore import Location
from capa.util import *
log = logging.getLogger("mitx.courseware") log = logging.getLogger("mitx.courseware")
...@@ -139,9 +140,9 @@ class OpenEndedModule(): ...@@ -139,9 +140,9 @@ class OpenEndedModule():
if rubric is None: if rubric is None:
raise ValueError("No rubric found in problem xml.") raise ValueError("No rubric found in problem xml.")
self._parse(oeparam, prompt, rubric) self._parse(oeparam, prompt, rubric, system)
def _parse(self, oeparam, prompt, rubric): def _parse(self, oeparam, prompt, rubric, system):
''' '''
Parse OpenEndedResponse XML: Parse OpenEndedResponse XML:
self.initial_display self.initial_display
...@@ -151,8 +152,8 @@ class OpenEndedModule(): ...@@ -151,8 +152,8 @@ class OpenEndedModule():
self.answer - What to display when show answer is clicked self.answer - What to display when show answer is clicked
''' '''
# Note that OpenEndedResponse is agnostic to the specific contents of grader_payload # Note that OpenEndedResponse is agnostic to the specific contents of grader_payload
prompt_string = self.stringify_children(prompt) prompt_string = stringify_children(prompt)
rubric_string = self.stringify_children(rubric) rubric_string = stringify_children(rubric)
grader_payload = oeparam.find('grader_payload') grader_payload = oeparam.find('grader_payload')
grader_payload = grader_payload.text if grader_payload is not None else '' grader_payload = grader_payload.text if grader_payload is not None else ''
...@@ -170,8 +171,8 @@ class OpenEndedModule(): ...@@ -170,8 +171,8 @@ class OpenEndedModule():
self.answer = find_with_default(oeparam, 'answer_display', 'No answer given.') self.answer = find_with_default(oeparam, 'answer_display', 'No answer given.')
parsed_grader_payload.update({ parsed_grader_payload.update({
'location' : self.system.location, 'location' : system.location,
'course_id' : self.system.course_id, 'course_id' : system.course_id,
'prompt' : prompt_string, 'prompt' : prompt_string,
'rubric' : rubric_string, 'rubric' : rubric_string,
'initial_display' : self.initial_display, 'initial_display' : self.initial_display,
...@@ -186,15 +187,15 @@ class OpenEndedModule(): ...@@ -186,15 +187,15 @@ class OpenEndedModule():
except ValueError: except ValueError:
self.max_score = 1 self.max_score = 1
def handle_message_post(self,get): def handle_message_post(self,get, system):
""" """
Handles a student message post (a reaction to the grade they received from an open ended grader type) Handles a student message post (a reaction to the grade they received from an open ended grader type)
Returns a boolean success/fail and an error message Returns a boolean success/fail and an error message
""" """
event_info = dict() event_info = dict()
event_info['problem_id'] = self.location.url() event_info['problem_id'] = system.location.url()
event_info['student_id'] = self.system.anonymous_student_id event_info['student_id'] = system.anonymous_student_id
event_info['survey_responses']= get event_info['survey_responses']= get
survey_responses=event_info['survey_responses'] survey_responses=event_info['survey_responses']
...@@ -212,15 +213,15 @@ class OpenEndedModule(): ...@@ -212,15 +213,15 @@ class OpenEndedModule():
log.exception(error_message) log.exception(error_message)
return False, "There was an error saving your feedback. Please contact course staff." return False, "There was an error saving your feedback. Please contact course staff."
qinterface = self.system.xqueue['interface'] qinterface = system.xqueue['interface']
qtime = datetime.strftime(datetime.now(), xqueue_interface.dateformat) qtime = datetime.strftime(datetime.now(), xqueue_interface.dateformat)
anonymous_student_id = self.system.anonymous_student_id anonymous_student_id = system.anonymous_student_id
queuekey = xqueue_interface.make_hashkey(str(self.system.seed) + qtime + queuekey = xqueue_interface.make_hashkey(str(system.seed) + qtime +
anonymous_student_id + anonymous_student_id +
self.answer_id) self.answer_id)
xheader = xqueue_interface.make_xheader( xheader = xqueue_interface.make_xheader(
lms_callback_url=self.system.xqueue['callback_url'], lms_callback_url=system.xqueue['callback_url'],
lms_key=queuekey, lms_key=queuekey,
queue_name=self.message_queue_name queue_name=self.message_queue_name
) )
...@@ -246,7 +247,7 @@ class OpenEndedModule(): ...@@ -246,7 +247,7 @@ class OpenEndedModule():
return success, "Successfully submitted your feedback." return success, "Successfully submitted your feedback."
def get_score(self, student_answers): def get_score(self, student_answers, system):
try: try:
submission = student_answers[self.answer_id] submission = student_answers[self.answer_id]
except KeyError: except KeyError:
...@@ -258,17 +259,17 @@ class OpenEndedModule(): ...@@ -258,17 +259,17 @@ class OpenEndedModule():
# Prepare xqueue request # Prepare xqueue request
#------------------------------------------------------------ #------------------------------------------------------------
qinterface = self.system.xqueue['interface'] qinterface = system.xqueue['interface']
qtime = datetime.strftime(datetime.now(), xqueue_interface.dateformat) qtime = datetime.strftime(datetime.now(), xqueue_interface.dateformat)
anonymous_student_id = self.system.anonymous_student_id anonymous_student_id = system.anonymous_student_id
# Generate header # Generate header
queuekey = xqueue_interface.make_hashkey(str(self.system.seed) + qtime + queuekey = xqueue_interface.make_hashkey(str(system.seed) + qtime +
anonymous_student_id + anonymous_student_id +
self.answer_id) self.answer_id)
xheader = xqueue_interface.make_xheader(lms_callback_url=self.system.xqueue['callback_url'], xheader = xqueue_interface.make_xheader(lms_callback_url=system.xqueue['callback_url'],
lms_key=queuekey, lms_key=queuekey,
queue_name=self.queue_name) queue_name=self.queue_name)
...@@ -510,7 +511,7 @@ class OpenEndedModule(): ...@@ -510,7 +511,7 @@ class OpenEndedModule():
return ScoreMessage(valid=True, correct=correct, return ScoreMessage(valid=True, correct=correct,
points=score_result['score'], msg=feedback) points=score_result['score'], msg=feedback)
def handle_ajax(self, dispatch, get): def handle_ajax(self, dispatch, get, system):
''' '''
This is called by courseware.module_render, to handle an AJAX call. This is called by courseware.module_render, to handle an AJAX call.
"get" is request.POST. "get" is request.POST.
...@@ -532,7 +533,7 @@ class OpenEndedModule(): ...@@ -532,7 +533,7 @@ class OpenEndedModule():
return 'Error' return 'Error'
before = self.get_progress() before = self.get_progress()
d = handlers[dispatch](get) d = handlers[dispatch](get, system)
after = self.get_progress() after = self.get_progress()
d.update({ d.update({
'progress_changed': after != before, 'progress_changed': after != before,
...@@ -540,17 +541,17 @@ class OpenEndedModule(): ...@@ -540,17 +541,17 @@ class OpenEndedModule():
}) })
return json.dumps(d, cls=ComplexEncoder) return json.dumps(d, cls=ComplexEncoder)
def get_problem(self, get): def get_problem(self, get, system):
return self.get_html() return self.get_html(system)
def reset_problem(self, get): def reset_problem(self, get, system):
self.change_state(self.INITIAL) self.change_state(self.INITIAL)
return {'success': True} return {'success': True}
def save_problem(self, get): def save_problem(self, get, system):
pass pass
def update_score(self, get): def update_score(self, get, system):
""" """
Delivers grading response (e.g. from asynchronous code checking) to Delivers grading response (e.g. from asynchronous code checking) to
the capa problem, so its score can be updated the capa problem, so its score can be updated
...@@ -563,11 +564,11 @@ class OpenEndedModule(): ...@@ -563,11 +564,11 @@ class OpenEndedModule():
queuekey = get['queuekey'] queuekey = get['queuekey']
score_msg = get['xqueue_body'] score_msg = get['xqueue_body']
#TODO: Remove need for cmap #TODO: Remove need for cmap
self._update_score(score_msg, queuekey) self._update_score(score_msg, queuekey, system)
return dict() # No AJAX return is needed return dict() # No AJAX return is needed
def get_html(self): def get_html(self, system):
""" """
Implement special logic: handle queueing state, and default input. Implement special logic: handle queueing state, and default input.
""" """
...@@ -593,7 +594,7 @@ class OpenEndedModule(): ...@@ -593,7 +594,7 @@ class OpenEndedModule():
'value' : self.value, 'value' : self.value,
} }
html=self.system.render_template("open_ended.html", context) html=system.render_template("open_ended.html", context)
return html return html
def change_state(self, new_state): def change_state(self, new_state):
...@@ -659,7 +660,7 @@ class OpenEndedDescriptor(XmlDescriptor, EditingDescriptor): ...@@ -659,7 +660,7 @@ class OpenEndedDescriptor(XmlDescriptor, EditingDescriptor):
def parse(k): def parse(k):
"""Assumes that xml_object has child k""" """Assumes that xml_object has child k"""
return stringify_children(xml_object.xpath(k)[0]) return xml_object.xpath(k)[0]
return {'rubric': parse('openendedrubric'), return {'rubric': parse('openendedrubric'),
'prompt': parse('prompt'), 'prompt': parse('prompt'),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment