Commit 8ed9ab44 by Arjun Singh

Contextualizing javascript parameters

parent 113535db
...@@ -384,19 +384,23 @@ class JavascriptResponse(LoncapaResponse): ...@@ -384,19 +384,23 @@ class JavascriptResponse(LoncapaResponse):
node_path = self.system.node_path + ":" + os.path.normpath(js_dir) node_path = self.system.node_path + ":" + os.path.normpath(js_dir)
tmp_env["NODE_PATH"] = node_path tmp_env["NODE_PATH"] = node_path
return tmp_env return tmp_env
def call_node(self, args):
subprocess_args = ["node"]
subprocess_args.extend(args)
return subprocess.check_output(subprocess_args, env=self.get_node_env())
def generate_problem_state(self): def generate_problem_state(self):
generator_file = os.path.dirname(os.path.normpath(__file__)) + '/javascript_problem_generator.js' generator_file = os.path.dirname(os.path.normpath(__file__)) + '/javascript_problem_generator.js'
output = subprocess.check_output(["node", output = self.call_node([generator_file,
generator_file, self.generator,
self.generator, json.dumps(self.generator_dependencies),
json.dumps(self.generator_dependencies), json.dumps(str(self.system.seed)),
json.dumps(str(self.system.seed)), json.dumps(self.params)]).strip()
json.dumps(self.params)
],
env=self.get_node_env()).strip()
return json.loads(output) return json.loads(output)
...@@ -407,7 +411,8 @@ class JavascriptResponse(LoncapaResponse): ...@@ -407,7 +411,8 @@ class JavascriptResponse(LoncapaResponse):
for param in self.xml.xpath('//*[@id=$id]//responseparam', for param in self.xml.xpath('//*[@id=$id]//responseparam',
id=self.xml.get('id')): id=self.xml.get('id')):
params[param.get("name")] = json.loads(param.get("value")) raw_param = param.get("value")
params[param.get("name")] = contextualize_text(raw_param, self.context)
return params return params
...@@ -442,15 +447,12 @@ class JavascriptResponse(LoncapaResponse): ...@@ -442,15 +447,12 @@ class JavascriptResponse(LoncapaResponse):
submission = json.dumps(None) submission = json.dumps(None)
grader_file = os.path.dirname(os.path.normpath(__file__)) + '/javascript_problem_grader.js' grader_file = os.path.dirname(os.path.normpath(__file__)) + '/javascript_problem_grader.js'
outputs = subprocess.check_output(["node", outputs = self.call_node([grader_file,
grader_file, self.grader,
self.grader, json.dumps(self.grader_dependencies),
json.dumps(self.grader_dependencies), submission,
submission, json.dumps(self.problem_state),
json.dumps(self.problem_state), json.dumps(self.params)]).split('\n')
json.dumps(self.params)
],
env=self.get_node_env()).split('\n')
all_correct = json.loads(outputs[0].strip()) all_correct = json.loads(outputs[0].strip())
evaluation = outputs[1].strip() evaluation = outputs[1].strip()
......
...@@ -293,6 +293,9 @@ class @Problem ...@@ -293,6 +293,9 @@ class @Problem
problemState = data.data("problem_state") problemState = data.data("problem_state")
displayClass = window[data.data('display_class')] displayClass = window[data.data('display_class')]
if evaluation == ''
evaluation = null
container = $(element).find(".javascriptinput_container") container = $(element).find(".javascriptinput_container")
submissionField = $(element).find(".javascriptinput_input") submissionField = $(element).find(".javascriptinput_input")
......
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