Merge pull request #1668 from ilvalle/fix_compile_views
fix performance regression with compiled views
This commit is contained in:
+15
-13
@@ -606,13 +606,13 @@ def run_controller_in(controller, function, environment):
|
|||||||
badc = 'invalid controller (%s/%s)' % (controller, function)
|
badc = 'invalid controller (%s/%s)' % (controller, function)
|
||||||
badf = 'invalid function (%s/%s)' % (controller, function)
|
badf = 'invalid function (%s/%s)' % (controller, function)
|
||||||
if os.path.exists(cpath):
|
if os.path.exists(cpath):
|
||||||
filename = pjoin(cpath, 'controllers.%s.%s.pyc'
|
filename = pjoin(cpath, 'controllers.%s.%s.pyc' % (controller, function))
|
||||||
% (controller, function))
|
try:
|
||||||
if not os.path.exists(filename):
|
ccode = getcfs(filename, filename, lambda: read_pyc(filename))
|
||||||
|
except IOError:
|
||||||
raise HTTP(404,
|
raise HTTP(404,
|
||||||
rewrite.THREAD_LOCAL.routes.error_message % badf,
|
rewrite.THREAD_LOCAL.routes.error_message % badf,
|
||||||
web2py_error=badf)
|
web2py_error=badf)
|
||||||
ccode = getcfs(filename, filename, lambda: read_pyc(filename))
|
|
||||||
elif function == '_TEST':
|
elif function == '_TEST':
|
||||||
# TESTING: adjust the path to include site packages
|
# TESTING: adjust the path to include site packages
|
||||||
from gluon.settings import global_settings
|
from gluon.settings import global_settings
|
||||||
@@ -633,13 +633,13 @@ def run_controller_in(controller, function, environment):
|
|||||||
code += TEST_CODE
|
code += TEST_CODE
|
||||||
ccode = compile2(code, filename)
|
ccode = compile2(code, filename)
|
||||||
else:
|
else:
|
||||||
filename = pjoin(folder, 'controllers/%s.py'
|
filename = pjoin(folder, 'controllers/%s.py' % controller)
|
||||||
% controller)
|
try:
|
||||||
if not os.path.exists(filename):
|
code = getcfs(filename, filename, lambda: read_file(filename))
|
||||||
|
except IOError:
|
||||||
raise HTTP(404,
|
raise HTTP(404,
|
||||||
rewrite.THREAD_LOCAL.routes.error_message % badc,
|
rewrite.THREAD_LOCAL.routes.error_message % badc,
|
||||||
web2py_error=badc)
|
web2py_error=badc)
|
||||||
code = getcfs(filename, filename, lambda: read_file(filename))
|
|
||||||
exposed = find_exposed_functions(code)
|
exposed = find_exposed_functions(code)
|
||||||
if function not in exposed:
|
if function not in exposed:
|
||||||
raise HTTP(404,
|
raise HTTP(404,
|
||||||
@@ -715,12 +715,14 @@ def run_view_in(environment):
|
|||||||
raise HTTP(404,
|
raise HTTP(404,
|
||||||
rewrite.THREAD_LOCAL.routes.error_message % badv,
|
rewrite.THREAD_LOCAL.routes.error_message % badv,
|
||||||
web2py_error=badv)
|
web2py_error=badv)
|
||||||
layer = filename
|
|
||||||
# Compile the template
|
|
||||||
ccode = parse_template(view,
|
|
||||||
pjoin(folder, 'views'),
|
|
||||||
context=environment)
|
|
||||||
|
|
||||||
|
# if the view is not compiled
|
||||||
|
if not layer:
|
||||||
|
# Compile the template
|
||||||
|
ccode = parse_template(view,
|
||||||
|
pjoin(folder, 'views'),
|
||||||
|
context=environment)
|
||||||
|
layer = filename
|
||||||
restricted(ccode, environment, layer=layer)
|
restricted(ccode, environment, layer=layer)
|
||||||
# parse_template saves everything in response body
|
# parse_template saves everything in response body
|
||||||
return environment['response'].body.getvalue()
|
return environment['response'].body.getvalue()
|
||||||
|
|||||||
Reference in New Issue
Block a user