summaryrefslogtreecommitdiff
path: root/repoze/bfg/request.py
diff options
context:
space:
mode:
Diffstat (limited to 'repoze/bfg/request.py')
-rw-r--r--repoze/bfg/request.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/repoze/bfg/request.py b/repoze/bfg/request.py
index 416413c33..e81710ae1 100644
--- a/repoze/bfg/request.py
+++ b/repoze/bfg/request.py
@@ -19,12 +19,19 @@ class Request(WebobRequest):
implements(IRequest)
charset = 'utf-8'
+ # override default WebOb "environ['adhoc_attr']" mutation behavior
+ __getattr__ = object.__getattribute__
+ __setattr__ = object.__setattr__
+ __delattr__ = object.__delattr__
+
def request_factory(environ):
if 'bfg.routes.route' in environ:
route = environ['bfg.routes.route']
factory = queryUtility(IRouteRequest, name=route.name)
if factory is not None:
- return factory(environ)
+ request = factory(environ)
+ request.matchdict = environ['bfg.routes.matchdict']
+ return request
return Request(environ)
def create_route_request_factory(name):
@@ -34,10 +41,15 @@ def create_route_request_factory(name):
implements(iface)
charset = 'utf-8'
+ # override default WebOb "environ['adhoc_attr']" mutation behavior
+ __getattr__ = object.__getattribute__
+ __setattr__ = object.__setattr__
+ __delattr__ = object.__delattr__
+
return RouteRequest
def add_global_response_headers(request, headerlist):
- attrs = request.environ.setdefault('webob.adhoc_attrs', {})
+ attrs = request.__dict__
response_headers = attrs.setdefault('global_response_headers', [])
response_headers.extend(headerlist)