summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/request.py4
-rw-r--r--pyramid/router.py13
2 files changed, 9 insertions, 8 deletions
diff --git a/pyramid/request.py b/pyramid/request.py
index 605b4b061..31a6bb12d 100644
--- a/pyramid/request.py
+++ b/pyramid/request.py
@@ -221,9 +221,9 @@ class Request(BaseRequest, DeprecatedRequestMethods):
wrappers.append(wrapper)
self.view_wrappers = wrappers
- def _wrap_view(self, view, is_exc_view=False):
+ def _wrap_view(self, view, exc=None):
for wrapper in self.view_wrappers:
- view = wrapper(view, is_exc_view)
+ view = wrapper(view, self, exc)
return view
def add_response_callback(self, callback):
diff --git a/pyramid/router.py b/pyramid/router.py
index b11ebc7eb..0294d8d75 100644
--- a/pyramid/router.py
+++ b/pyramid/router.py
@@ -141,11 +141,6 @@ class Router(object):
(IViewClassifier, request_iface, context_iface),
IView, name=view_name, default=None)
- # if there were any view wrappers set on the current
- # request, use them to wrap the view
- if request.view_wrappers:
- view_callable = request._wrap_view(view_callable)
-
# invoke the view callable
if view_callable is None:
if self.debug_notfound:
@@ -163,6 +158,11 @@ class Router(object):
msg = request.path_info
raise HTTPNotFound(msg)
else:
+ # if there were any view wrappers for the current
+ # request, use them to wrap the view
+ if request.view_wrappers:
+ view_callable = request._wrap_view(view_callable)
+
response = view_callable(context, request)
# handle exceptions raised during root finding and view-exec
@@ -184,7 +184,8 @@ class Router(object):
raise
if request.view_wrappers:
- view_callable = request._wrap_view(view_callable, True)
+ view_callable = request._wrap_view(view_callable,
+ exc=why)
response = view_callable(why, request)