Commit 213b53fc by ichuang

fixed script evaluation in capa_problem: don't parse javascript or

perl, and use "context" for both global and local frames
parent 6c8abf63
......@@ -210,17 +210,21 @@ class LoncapaProblem(object):
Problem XML goes to Python execution context. Runs everything in script tags
'''
random.seed(self.seed)
### IKE: Why do we need these two lines?
context = {'global_context':global_context} # save global context in here also
global_context['context'] = context # and put link to local context in the global one
context.update(global_context) # initialize context to have stuff in global_context
context['__builtins__'] = globals()['__builtins__'] # put globals there also
context['I4xSystem'] = self.system
#for script in tree.xpath('/problem/script'):
for script in tree.findall('.//script'):
if 'javascript' in script.get('type'): continue # skip javascript
if 'perl' in script.get('type'): continue # skip perl
# TODO: evaluate only python
code = script.text
XMLESC = {"'": "'", """: '"'}
code = unescape(code,XMLESC)
try:
exec code in global_context, context
exec code in context, context # use "context" for global context; thus defs in code are global within code
except Exception,err:
print "[courseware.capa.capa_problem.extract_context] error %s" % err
print "in doing exec of this code:",code
......
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