cache (and compile) parse_template in run_view_in, fix #1474

This commit is contained in:
ilvalle
2016-09-25 10:08:26 +02:00
parent 0e4ff55306
commit 576aaf668d
5 changed files with 33 additions and 68 deletions
+2 -6
View File
@@ -202,7 +202,7 @@ def compile2(code, layer):
return compile(code, layer, 'exec')
def restricted(code, environment=None, layer='Unknown'):
def restricted(ccode, environment=None, layer='Unknown'):
"""
Runs code in environment and returns the output. If an exception occurs
in code it raises a RestrictedError containing the traceback. Layer is
@@ -213,10 +213,6 @@ def restricted(code, environment=None, layer='Unknown'):
environment['__file__'] = layer
environment['__name__'] = '__restricted__'
try:
if isinstance(code, types.CodeType):
ccode = code
else:
ccode = compile2(code, layer)
exec(ccode, environment)
except HTTP:
raise
@@ -231,7 +227,7 @@ def restricted(code, environment=None, layer='Unknown'):
sys.excepthook(etype, evalue, tb)
del tb
output = "%s %s" % (etype, evalue)
raise RestrictedError(layer, code, output, environment)
raise RestrictedError(layer, ccode, output, environment)
def snapshot(info=None, context=5, code=None, environment=None):