Merge pull request #1743 from ilvalle/fix_ticket_compile_views
Fix view file name in ticket traceback
This commit is contained in:
+6
-3
@@ -676,6 +676,7 @@ def run_view_in(environment):
|
|||||||
badv = 'invalid view (%s)' % view
|
badv = 'invalid view (%s)' % view
|
||||||
patterns = response.get('generic_patterns')
|
patterns = response.get('generic_patterns')
|
||||||
layer = None
|
layer = None
|
||||||
|
scode = None
|
||||||
if patterns:
|
if patterns:
|
||||||
regex = re_compile('|'.join(map(fnmatch.translate, patterns)))
|
regex = re_compile('|'.join(map(fnmatch.translate, patterns)))
|
||||||
short_action = '%(controller)s/%(function)s.%(extension)s' % request
|
short_action = '%(controller)s/%(function)s.%(extension)s' % request
|
||||||
@@ -718,12 +719,14 @@ def run_view_in(environment):
|
|||||||
|
|
||||||
# if the view is not compiled
|
# if the view is not compiled
|
||||||
if not layer:
|
if not layer:
|
||||||
# Compile the template
|
# Parse template
|
||||||
ccode = parse_template(view,
|
scode = parse_template(view,
|
||||||
pjoin(folder, 'views'),
|
pjoin(folder, 'views'),
|
||||||
context=environment)
|
context=environment)
|
||||||
|
# Compile template
|
||||||
|
ccode = compile2(scode, filename)
|
||||||
layer = filename
|
layer = filename
|
||||||
restricted(ccode, environment, layer=layer)
|
restricted(ccode, environment, layer=layer, scode=scode)
|
||||||
# parse_template saves everything in response body
|
# parse_template saves everything in response body
|
||||||
return environment['response'].body.getvalue()
|
return environment['response'].body.getvalue()
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -205,7 +205,7 @@ def compile2(code, layer):
|
|||||||
return compile(code, layer, 'exec')
|
return compile(code, layer, 'exec')
|
||||||
|
|
||||||
|
|
||||||
def restricted(ccode, environment=None, layer='Unknown'):
|
def restricted(ccode, environment=None, layer='Unknown', scode=None):
|
||||||
"""
|
"""
|
||||||
Runs code in environment and returns the output. If an exception occurs
|
Runs code in environment and returns the output. If an exception occurs
|
||||||
in code it raises a RestrictedError containing the traceback. Layer is
|
in code it raises a RestrictedError containing the traceback. Layer is
|
||||||
@@ -230,7 +230,9 @@ def restricted(ccode, environment=None, layer='Unknown'):
|
|||||||
sys.excepthook(etype, evalue, tb)
|
sys.excepthook(etype, evalue, tb)
|
||||||
del tb
|
del tb
|
||||||
output = "%s %s" % (etype, evalue)
|
output = "%s %s" % (etype, evalue)
|
||||||
raise RestrictedError(layer, ccode, output, environment)
|
# Save source code in ticket when available
|
||||||
|
scode = scode if scode else ccode
|
||||||
|
raise RestrictedError(layer, scode, output, environment)
|
||||||
|
|
||||||
|
|
||||||
def snapshot(info=None, context=5, code=None, environment=None):
|
def snapshot(info=None, context=5, code=None, environment=None):
|
||||||
|
|||||||
Reference in New Issue
Block a user