do not cache normal views because of dependencies
This commit is contained in:
+16
-51
@@ -430,13 +430,10 @@ def build_environment(request, response, session, store_current=True):
|
|||||||
current.T = t
|
current.T = t
|
||||||
current.cache = c
|
current.cache = c
|
||||||
|
|
||||||
global __builtins__
|
|
||||||
if is_jython: # jython hack
|
if is_jython: # jython hack
|
||||||
|
global __builtins__
|
||||||
__builtins__ = mybuiltin()
|
__builtins__ = mybuiltin()
|
||||||
elif is_pypy: # apply the same hack to pypy too
|
|
||||||
__builtins__ = mybuiltin()
|
|
||||||
elif PY2:
|
|
||||||
__builtins__['__import__'] = builtin.__import__ # WHY?
|
|
||||||
environment['request'] = request
|
environment['request'] = request
|
||||||
environment['response'] = response
|
environment['response'] = response
|
||||||
environment['session'] = session
|
environment['session'] = session
|
||||||
@@ -444,7 +441,6 @@ def build_environment(request, response, session, store_current=True):
|
|||||||
lambda name, reload=False, app=request.application:\
|
lambda name, reload=False, app=request.application:\
|
||||||
local_import_aux(name, reload, app)
|
local_import_aux(name, reload, app)
|
||||||
BaseAdapter.set_folder(pjoin(request.folder, 'databases'))
|
BaseAdapter.set_folder(pjoin(request.folder, 'databases'))
|
||||||
response._view_environment = copy.copy(environment)
|
|
||||||
custom_import_install()
|
custom_import_install()
|
||||||
return environment
|
return environment
|
||||||
|
|
||||||
@@ -488,7 +484,6 @@ def compile_views(folder, skip_failed_views=False):
|
|||||||
raise Exception("%s in %s" % (e, fname))
|
raise Exception("%s in %s" % (e, fname))
|
||||||
else:
|
else:
|
||||||
filename = 'views.%s.py' % fname.replace(os.path.sep, '.')
|
filename = 'views.%s.py' % fname.replace(os.path.sep, '.')
|
||||||
# filename = ('views/%s.py' % fname).replace('/', '_').replace('\\', '_')
|
|
||||||
filename = pjoin(folder, 'compiled', filename)
|
filename = pjoin(folder, 'compiled', filename)
|
||||||
write_file(filename, data)
|
write_file(filename, data)
|
||||||
save_pyc(filename)
|
save_pyc(filename)
|
||||||
@@ -504,7 +499,7 @@ def compile_models(folder):
|
|||||||
path = pjoin(folder, 'models')
|
path = pjoin(folder, 'models')
|
||||||
for fname in listdir(path, '.+\.py$'):
|
for fname in listdir(path, '.+\.py$'):
|
||||||
data = read_file(pjoin(path, fname))
|
data = read_file(pjoin(path, fname))
|
||||||
modelfile = 'models.'+fname.replace(os.path.sep,'.')
|
modelfile = 'models.'+fname.replace(os.path.sep, '.')
|
||||||
filename = pjoin(folder, 'compiled', modelfile)
|
filename = pjoin(folder, 'compiled', modelfile)
|
||||||
mktree(filename)
|
mktree(filename)
|
||||||
write_file(filename, data)
|
write_file(filename, data)
|
||||||
@@ -583,11 +578,10 @@ def run_models_in(environment):
|
|||||||
continue
|
continue
|
||||||
elif compiled:
|
elif compiled:
|
||||||
code = getcfs(model, model, lambda: read_pyc(model))
|
code = getcfs(model, model, lambda: read_pyc(model))
|
||||||
elif is_gae:
|
else:
|
||||||
code = getcfs(model, model,
|
code = getcfs(model, model,
|
||||||
lambda: compile2(read_file(model), model))
|
lambda: compile2(read_file(model), model))
|
||||||
else:
|
|
||||||
code = getcfs(model, model, None)
|
|
||||||
restricted(code, environment, layer=model)
|
restricted(code, environment, layer=model)
|
||||||
|
|
||||||
|
|
||||||
@@ -611,7 +605,6 @@ def run_controller_in(controller, function, environment):
|
|||||||
rewrite.THREAD_LOCAL.routes.error_message % badf,
|
rewrite.THREAD_LOCAL.routes.error_message % badf,
|
||||||
web2py_error=badf)
|
web2py_error=badf)
|
||||||
code = getcfs(filename, filename, lambda: read_pyc(filename))
|
code = getcfs(filename, filename, lambda: read_pyc(filename))
|
||||||
restricted(code, environment, layer=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
|
||||||
@@ -630,7 +623,6 @@ def run_controller_in(controller, function, environment):
|
|||||||
environment['__symbols__'] = environment.keys()
|
environment['__symbols__'] = environment.keys()
|
||||||
code = read_file(filename)
|
code = read_file(filename)
|
||||||
code += TEST_CODE
|
code += TEST_CODE
|
||||||
restricted(code, environment, layer=filename)
|
|
||||||
else:
|
else:
|
||||||
filename = pjoin(folder, 'controllers/%s.py'
|
filename = pjoin(folder, 'controllers/%s.py'
|
||||||
% controller)
|
% controller)
|
||||||
@@ -645,10 +637,10 @@ def run_controller_in(controller, function, environment):
|
|||||||
rewrite.THREAD_LOCAL.routes.error_message % badf,
|
rewrite.THREAD_LOCAL.routes.error_message % badf,
|
||||||
web2py_error=badf)
|
web2py_error=badf)
|
||||||
code = "%s\nresponse._vars=response._caller(%s)\n" % (code, function)
|
code = "%s\nresponse._vars=response._caller(%s)\n" % (code, function)
|
||||||
if is_gae:
|
layer = filename + ':' + function
|
||||||
layer = filename + ':' + function
|
code = getcfs(layer, filename, lambda: compile2(code, layer))
|
||||||
code = getcfs(layer, filename, lambda: compile2(code, layer))
|
|
||||||
restricted(code, environment, filename)
|
restricted(code, environment, layer=filename)
|
||||||
response = current.response
|
response = current.response
|
||||||
vars = response._vars
|
vars = response._vars
|
||||||
if response.postprocessing:
|
if response.postprocessing:
|
||||||
@@ -683,7 +675,7 @@ def run_view_in(environment):
|
|||||||
if not isinstance(view, str):
|
if not isinstance(view, str):
|
||||||
ccode = parse_template(view, pjoin(folder, 'views'),
|
ccode = parse_template(view, pjoin(folder, 'views'),
|
||||||
context=environment)
|
context=environment)
|
||||||
restricted(ccode, environment, 'file stream')
|
layer = 'file stream'
|
||||||
else:
|
else:
|
||||||
filename = pjoin(folder, 'views', view)
|
filename = pjoin(folder, 'views', view)
|
||||||
if os.path.exists(path): # compiled views
|
if os.path.exists(path): # compiled views
|
||||||
@@ -714,16 +706,12 @@ def run_view_in(environment):
|
|||||||
rewrite.THREAD_LOCAL.routes.error_message % badv,
|
rewrite.THREAD_LOCAL.routes.error_message % badv,
|
||||||
web2py_error=badv)
|
web2py_error=badv)
|
||||||
layer = filename
|
layer = filename
|
||||||
if is_gae:
|
# Compile the template
|
||||||
ccode = getcfs(layer, filename,
|
ccode = parse_template(view,
|
||||||
lambda: compile2(parse_template(view,
|
pjoin(folder, 'views'),
|
||||||
pjoin(folder, 'views'),
|
context=environment)
|
||||||
context=environment), layer))
|
|
||||||
else:
|
restricted(ccode, environment, layer=layer)
|
||||||
ccode = parse_template(view,
|
|
||||||
pjoin(folder, 'views'),
|
|
||||||
context=environment)
|
|
||||||
restricted(ccode, environment, layer)
|
|
||||||
|
|
||||||
|
|
||||||
def remove_compiled_application(folder):
|
def remove_compiled_application(folder):
|
||||||
@@ -749,26 +737,3 @@ def compile_application(folder, skip_failed_views=False):
|
|||||||
compile_controllers(folder)
|
compile_controllers(folder)
|
||||||
failed_views = compile_views(folder, skip_failed_views)
|
failed_views = compile_views(folder, skip_failed_views)
|
||||||
return failed_views
|
return failed_views
|
||||||
|
|
||||||
|
|
||||||
def test():
|
|
||||||
"""
|
|
||||||
Example::
|
|
||||||
|
|
||||||
>>> import traceback, types
|
|
||||||
>>> environment={'x':1}
|
|
||||||
>>> open('a.py', 'w').write('print 1/x')
|
|
||||||
>>> save_pyc('a.py')
|
|
||||||
>>> os.unlink('a.py')
|
|
||||||
>>> if type(read_pyc('a.pyc'))==types.CodeType: print 'code'
|
|
||||||
code
|
|
||||||
>>> exec read_pyc('a.pyc') in environment
|
|
||||||
1
|
|
||||||
"""
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
import doctest
|
|
||||||
doctest.testmod()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user