From 8fb0b71be63441ba491df7b47004d6c65ec11ef6 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Wed, 9 Oct 2013 11:31:33 -0500 Subject: [PATCH] fixed compilerapp sorting issue, better --- VERSION | 2 +- gluon/compileapp.py | 56 ++++++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/VERSION b/VERSION index b43068d1..430138ea 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.7.2-stable+timestamp.2013.10.09.11.13.44 +Version 2.7.2-stable+timestamp.2013.10.09.11.30.04 diff --git a/gluon/compileapp.py b/gluon/compileapp.py index b30d2dc5..b4951ea5 100644 --- a/gluon/compileapp.py +++ b/gluon/compileapp.py @@ -512,35 +512,39 @@ def run_models_in(environment): folder = environment['request'].folder c = environment['request'].controller - f = environment['request'].function + f = environment['request'].function + response = environment['response'] + + path = pjoin(folder, 'models') cpath = pjoin(folder, 'compiled') - if os.path.exists(cpath): - for model in sorted(listdir(cpath, '^models[_.].+\.pyc$', 0), - model_cmp): - restricted(read_pyc(model), environment, layer=model) - path = pjoin(cpath, 'models') - models = listdir(path, '^\w+\.pyc$', 0, sort=False) - compiled = True + compiled = os.path.exists(cpath) + if compiled: + models = sorted(listdir(cpath, '^models[_.][\w.]+\.pyc$', 0),model_cmp) else: - path = pjoin(folder, 'models') - models = listdir(path, '^\w+\.py$', 0, sort=False) - compiled = False - n = len(path) + 1 + models = sorted(listdir(path, '^\w+\.py$', 0, sort=False),model_cmp) + n = len(path)+1 + + models_to_run = None for model in models: - regex = environment['response'].models_to_run - if isinstance(regex, list): - regex = re_compile('|'.join(regex)) - file = model[n:].replace(os.path.sep, '/').replace('.pyc', '.py') - if not regex.search(file) and c != 'appadmin': - continue - elif compiled: - code = read_pyc(model) - elif is_gae: - code = getcfs(model, model, - lambda: compile2(read_file(model), model)) - else: - code = getcfs(model, model, None) - restricted(code, environment, layer=model) + if response.models_to_run != models_to_run: + regex = models_to_run = response.models_to_run + if isinstance(regex, list): + regex = re_compile('|'.join(regex)) + if models_to_run: + if compiled: + fname = model[n:-4].replace('.','/')+'.py' + else: + fname = model[n:].replace(os.path.sep,'/') + if not regex.search(fname) and c != 'appadmin': + continue + elif compiled: + code = read_pyc(model) + elif is_gae: + code = getcfs(model, model, + lambda: compile2(read_file(model), model)) + else: + code = getcfs(model, model, None) + restricted(code, environment, layer=model) def run_controller_in(controller, function, environment):