From 524a65d0a9d564c44a9ec3db9e57a4f2f0de3ddc Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 2 Sep 2012 15:03:25 -0500 Subject: [PATCH] routes_in = (regex, value, custom_env) --- VERSION | 2 +- gluon/rewrite.py | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 852bce5d..8473a5c8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.0.6 (2012-09-02 14:52:46) stable +Version 2.0.6 (2012-09-02 15:03:21) stable diff --git a/gluon/rewrite.py b/gluon/rewrite.py index 411a3b15..9804f275 100644 --- a/gluon/rewrite.py +++ b/gluon/rewrite.py @@ -308,8 +308,8 @@ def load(routes='routes.py', app=None, data=None, rdict=None): for sym in ('routes_app', 'routes_in', 'routes_out'): if sym in symbols: - for (k, v) in symbols[sym]: - p[sym].append(compile_regex(k, v)) + for items in symbols[sym]: + p[sym].append(compile_regex(*items)) for sym in ('routes_onerror', 'routes_apps_raw', 'error_handler','error_message', 'error_message_ticket', 'default_application','default_controller', 'default_function', @@ -371,7 +371,7 @@ def load(routes='routes.py', app=None, data=None, rdict=None): log_rewrite('URL rewrite is on. configuration in %s' % path) -def compile_regex(k, v): +def compile_regex(k, v, env=None): """ Preprocess and compile the regular expressions in routes_app/in/out The resulting regex will match a pattern of the form: @@ -405,7 +405,7 @@ def compile_regex(k, v): # same for replacement pattern, but with \g for item in regex_at.findall(v): v = v.replace(item, r'\g<%s>' % item[1:]) - return (re.compile(k, re.DOTALL), v) + return (re.compile(k, re.DOTALL), v, env or {}) def load_routers(all_apps): "load-time post-processing of routers" @@ -519,8 +519,9 @@ def regex_uri(e, regexes, tag, default=None): (e.get('REMOTE_ADDR','localhost'), e.get('wsgi.url_scheme', 'http').lower(), host, e.get('REQUEST_METHOD', 'get').lower(), path) - for (regex, value) in regexes: + for (regex, value, custom_env) in regexes: if regex.match(key): + e.update(custom_env) rewritten = regex.sub(value, key) log_rewrite('%s: [%s] [%s] -> %s' % (tag, key, value, rewritten)) return rewritten @@ -708,7 +709,7 @@ def regex_filter_out(url, e=None): e.get('request_method', 'get').lower(), items[0]) else: items[0] = ':http://localhost:get %s' % items[0] - for (regex, value) in thread.routes.routes_out: + for (regex, value, tmp) in thread.routes.routes_out: if regex.match(items[0]): rewritten = '?'.join([regex.sub(value, items[0])] + items[1:]) log_rewrite('routes_out: [%s] -> %s' % (url, rewritten))