Skip to content

Commit

Permalink
Merge pull request web2py#1450 from ilvalle/getcfs_compiled
Browse files Browse the repository at this point in the history
caching read_pyc
  • Loading branch information
mdipierro authored Sep 21, 2016
2 parents 44362aa + 352c93b commit 0225b68
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
7 changes: 4 additions & 3 deletions gluon/compileapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,7 @@ def run_models_in(environment):
if not regex.search(fname) and c != 'appadmin':
continue
elif compiled:
code = read_pyc(model)
code = getcfs(model, model, lambda: read_pyc(model))
elif is_gae:
code = getcfs(model, model,
lambda: compile2(read_file(model), model))
Expand Down Expand Up @@ -614,7 +614,8 @@ def run_controller_in(controller, function, environment):
raise HTTP(404,
rewrite.THREAD_LOCAL.routes.error_message % badf,
web2py_error=badf)
restricted(read_pyc(filename), environment, layer=filename)
code = getcfs(filename, filename, lambda: read_pyc(filename))
restricted(code, environment, layer=filename)
elif function == '_TEST':
# TESTING: adjust the path to include site packages
from settings import global_settings
Expand Down Expand Up @@ -706,7 +707,7 @@ def run_view_in(environment):
for f in files:
compiled = pjoin(path, f)
if os.path.exists(compiled):
code = read_pyc(compiled)
code = getcfs(compiled, compiled, lambda: read_pyc(compiled))
restricted(code, environment, layer=compiled)
return
if not os.path.exists(filename) and allow_generic:
Expand Down
2 changes: 1 addition & 1 deletion gluon/restricted.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ def __str__(self):


def compile2(code, layer):
return compile(code.rstrip(), layer, 'exec')
return compile(code, layer, 'exec')


def restricted(code, environment=None, layer='Unknown'):
Expand Down
13 changes: 11 additions & 2 deletions gluon/tests/test_appadmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import unittest


from gluon.compileapp import run_controller_in, run_view_in
from gluon.compileapp import run_controller_in, run_view_in, compile_application, remove_compiled_application
from gluon.languages import translator
from gluon.storage import Storage, List
from gluon import fileutils
Expand Down Expand Up @@ -76,7 +76,7 @@ def run_function(self):
def run_view(self):
return run_view_in(self.env)

def test_index(self):
def _test_index(self):
result = self.run_function()
self.assertTrue('db' in result['databases'])
self.env.update(result)
Expand All @@ -86,6 +86,15 @@ def test_index(self):
print(e.message)
self.fail('Could not make the view')

def test_index(self):
self._test_index()

def test_index_compiled(self):
appname_path = os.path.join(os.getcwd(), 'applications', 'welcome')
compile_application(appname_path)
self._test_index()
remove_compiled_application(appname_path)

def test_select(self):
request = self.env['request']
request.args = List(['db'])
Expand Down

0 comments on commit 0225b68

Please sign in to comment.