diff options
Diffstat (limited to 'repoze/bfg/request.py')
| -rw-r--r-- | repoze/bfg/request.py | 16 |
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) |
