summaryrefslogtreecommitdiff
path: root/pyramid/router.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyramid/router.py')
-rw-r--r--pyramid/router.py38
1 files changed, 1 insertions, 37 deletions
diff --git a/pyramid/router.py b/pyramid/router.py
index dcf828377..5faafb4bb 100644
--- a/pyramid/router.py
+++ b/pyramid/router.py
@@ -1,10 +1,7 @@
-import sys
-
from zope.interface import implements
from zope.interface import providedBy
from pyramid.interfaces import IDebugLogger
-from pyramid.interfaces import IExceptionViewClassifier
from pyramid.interfaces import IRequest
from pyramid.interfaces import IRootFactory
from pyramid.interfaces import IRouteRequest
@@ -24,6 +21,7 @@ from pyramid.request import Request
from pyramid.threadlocal import manager
from pyramid.traversal import DefaultRootFactory
from pyramid.traversal import ResourceTreeTraverser
+from pyramid.tweens import excview_tween_factory
class Router(object):
implements(IRouter)
@@ -190,37 +188,3 @@ class Router(object):
finally:
manager.pop()
-def excview_tween_factory(handler, registry):
- has_listeners = registry.has_listeners
- adapters = registry.adapters
- notify = registry.notify
-
- def exception_view_handler(request):
- attrs = request.__dict__
- try:
- request, response = handler(request)
- except Exception, exc:
- # WARNING: do not assign the result of sys.exc_info() to a
- # local var here, doing so will cause a leak
- attrs['exc_info'] = sys.exc_info()
- attrs['exception'] = exc
- # clear old generated request.response, if any; it may
- # have been mutated by the view, and its state is not
- # sane (e.g. caching headers)
- if 'response' in attrs:
- del attrs['response']
- request_iface = attrs['request_iface']
- provides = providedBy(exc)
- for_ = (IExceptionViewClassifier, request_iface.combined, provides)
- view_callable = adapters.lookup(for_, IView, default=None)
- if view_callable is None:
- raise
- response = view_callable(exc, request)
- has_listeners and notify(NewResponse(request, response))
- finally:
- attrs['exc_info'] = None
-
- return request, response
-
- return exception_view_handler
-