diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-05 02:29:54 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-05 02:29:54 +0000 |
| commit | 79957510964157dae99201b1b6a14ef209bc50f7 (patch) | |
| tree | ad5ff5adbf175ff1905e42eda7f59fd9f532bd4b /repoze/bfg/router.py | |
| parent | 5ed24b859b1e8deed12f73d1dc1808142218f61e (diff) | |
| download | pyramid-79957510964157dae99201b1b6a14ef209bc50f7.tar.gz pyramid-79957510964157dae99201b1b6a14ef209bc50f7.tar.bz2 pyramid-79957510964157dae99201b1b6a14ef209bc50f7.zip | |
Use WebOb.
Return a NotFound when we can't adapt.
Diffstat (limited to 'repoze/bfg/router.py')
| -rw-r--r-- | repoze/bfg/router.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py index f37ca0f7c..626080bdc 100644 --- a/repoze/bfg/router.py +++ b/repoze/bfg/router.py @@ -1,5 +1,11 @@ -from zope.component import getAdapter +from zope.component import queryMultiAdapter +from zope.interface import directlyProvides + +from webob import Request +from webob.exc import HTTPNotFound + from repoze.bfg.interfaces import IWSGIApplicationFactory +from repoze.bfg.interfaces import IWebObRequest class Router: def __init__(self, root_policy, traversal_policy): @@ -10,5 +16,10 @@ class Router: root = self.root_policy(environ) context, name, subpath = self.traversal_policy(root, environ) environ['repoze.bfg.subpath'] = subpath - app = getAdapter(context, IWSGIApplicationFactory, name=name) + request = Request(environ) + directlyProvides(request, IWebObRequest) + app = queryMultiAdapter((context, request), + IWSGIApplicationFactory, name=name) + if app is None: + app = HTTPNotFound(request.url) return app(environ, start_response) |
