summaryrefslogtreecommitdiff
path: root/routes/middleware.py
diff options
context:
space:
mode:
authorBen Bangert <ben@groovie.org>2010-02-28 10:56:46 -0800
committerBen Bangert <ben@groovie.org>2010-02-28 10:56:46 -0800
commit70248103ac63d6a763bf1d8f067d8f3751aa74d9 (patch)
tree7ab431f1842ec4f28b5e71c814a8fb97258d6a88 /routes/middleware.py
parent1c02dc6d28ad9eee37263a343f30d4a11ba0f685 (diff)
downloadroutes-70248103ac63d6a763bf1d8f067d8f3751aa74d9.tar.gz
Ensure singleton usage is still default in middleware so Routes upgrade doesn't break url_for users.
--HG-- branch : trunk
Diffstat (limited to 'routes/middleware.py')
-rw-r--r--routes/middleware.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/routes/middleware.py b/routes/middleware.py
index 0fa9a9e..b772038 100644
--- a/routes/middleware.py
+++ b/routes/middleware.py
@@ -13,7 +13,7 @@ class RoutesMiddleware(object):
"""Routing middleware that handles resolving the PATH_INFO in
addition to optionally recognizing method overriding."""
def __init__(self, wsgi_app, mapper, use_method_override=True,
- path_info=True):
+ path_info=True, singleton=True):
"""Create a Route middleware object
Using the use_method_override keyword will require Paste to be
@@ -32,6 +32,7 @@ class RoutesMiddleware(object):
"""
self.app = wsgi_app
self.mapper = mapper
+ self.singleton = singleton
self.use_method_override = use_method_override
self.path_info = path_info
log_debug = self.log_debug = logging.DEBUG >= log.getEffectiveLevel()
@@ -73,11 +74,18 @@ class RoutesMiddleware(object):
# Run the actual route matching
# -- Assignment of environ to config triggers route matching
- results = self.mapper.routematch(environ=environ)
- if results:
- match, route = results[0], results[1]
+ if self.singleton:
+ config = request_config()
+ config.mapper = self.mapper
+ config.environ = environ
+ match = config.mapper_dict
+ route = config.route
else:
- match = route = None
+ results = self.mapper.routematch(environ=environ)
+ if results:
+ match, route = results[0], results[1]
+ else:
+ match = route = None
if old_method:
environ['REQUEST_METHOD'] = old_method