From 8ed9ab44e74c82cccda8d85546234be9c22d4db6 Mon Sep 17 00:00:00 2001 From: Arjun Singh Date: Mon, 27 Aug 2012 23:48:42 -0700 Subject: [PATCH 1/2] Contextualizing javascript parameters --- common/lib/capa/capa/responsetypes.py | 38 ++++++++++--------- .../xmodule/js/src/capa/display.coffee | 3 ++ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index b2d56b48ca..0e14ac46c1 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -384,19 +384,23 @@ class JavascriptResponse(LoncapaResponse): node_path = self.system.node_path + ":" + os.path.normpath(js_dir) tmp_env["NODE_PATH"] = node_path 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): generator_file = os.path.dirname(os.path.normpath(__file__)) + '/javascript_problem_generator.js' - output = subprocess.check_output(["node", - generator_file, - self.generator, - json.dumps(self.generator_dependencies), - json.dumps(str(self.system.seed)), - json.dumps(self.params) - ], - env=self.get_node_env()).strip() + output = self.call_node([generator_file, + self.generator, + json.dumps(self.generator_dependencies), + json.dumps(str(self.system.seed)), + json.dumps(self.params)]).strip() return json.loads(output) @@ -407,7 +411,8 @@ class JavascriptResponse(LoncapaResponse): for param in self.xml.xpath('//*[@id=$id]//responseparam', 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 @@ -442,15 +447,12 @@ class JavascriptResponse(LoncapaResponse): submission = json.dumps(None) grader_file = os.path.dirname(os.path.normpath(__file__)) + '/javascript_problem_grader.js' - outputs = subprocess.check_output(["node", - grader_file, - self.grader, - json.dumps(self.grader_dependencies), - submission, - json.dumps(self.problem_state), - json.dumps(self.params) - ], - env=self.get_node_env()).split('\n') + outputs = self.call_node([grader_file, + self.grader, + json.dumps(self.grader_dependencies), + submission, + json.dumps(self.problem_state), + json.dumps(self.params)]).split('\n') all_correct = json.loads(outputs[0].strip()) evaluation = outputs[1].strip() diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.coffee b/common/lib/xmodule/xmodule/js/src/capa/display.coffee index 23fa4d70fe..27d3585f96 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/capa/display.coffee @@ -293,6 +293,9 @@ class @Problem problemState = data.data("problem_state") displayClass = window[data.data('display_class')] + if evaluation == '' + evaluation = null + container = $(element).find(".javascriptinput_container") submissionField = $(element).find(".javascriptinput_input") From f7ebc4dd23f1f6c0700902feaac7e68a2e98fc02 Mon Sep 17 00:00:00 2001 From: Arjun Singh Date: Tue, 28 Aug 2012 00:49:32 -0700 Subject: [PATCH 2/2] Load params from json --- common/lib/capa/capa/responsetypes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 0e14ac46c1..4d24fc6c23 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -412,7 +412,7 @@ class JavascriptResponse(LoncapaResponse): id=self.xml.get('id')): raw_param = param.get("value") - params[param.get("name")] = contextualize_text(raw_param, self.context) + params[param.get("name")] = json.loads(contextualize_text(raw_param, self.context)) return params