diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-09-20 02:54:46 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-09-20 02:54:46 +0000 |
| commit | 160f01439dc3e0d865b2e77bb4a9a7c9e7a16c1a (patch) | |
| tree | 5eb0dea7958a161806ffd6025e7cbb8db729e446 /repoze/bfg/router.py | |
| parent | e1205ca0f073ac6bbe992a507f8979f9ebcff5cf (diff) | |
| download | pyramid-160f01439dc3e0d865b2e77bb4a9a7c9e7a16c1a.tar.gz pyramid-160f01439dc3e0d865b2e77bb4a9a7c9e7a16c1a.tar.bz2 pyramid-160f01439dc3e0d865b2e77bb4a9a7c9e7a16c1a.zip | |
- Speed: do not register an ITraverserFactory in configure.zcml;
instead rely on queryAdapter and a manual default to
ModelGraphTraverser.
- Speed: do not register an IContextURL in configure.zcml; instead
rely on queryAdapter and a manual default to TraversalContextURL.
- General speed microimprovements for helloworld benchmark: replace
try/excepts with statements which use 'in' keyword.
Diffstat (limited to 'repoze/bfg/router.py')
| -rw-r--r-- | repoze/bfg/router.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py index 4ee0f5215..f9ecd427d 100644 --- a/repoze/bfg/router.py +++ b/repoze/bfg/router.py @@ -31,6 +31,7 @@ from repoze.bfg.security import Unauthorized from repoze.bfg.settings import Settings from repoze.bfg.settings import get_options from repoze.bfg.threadlocal import manager +from repoze.bfg.traversal import ModelGraphTraverser from repoze.bfg.traversal import _traverse from repoze.bfg.urldispatch import RoutesRootFactory from repoze.bfg.view import NotFound @@ -79,7 +80,9 @@ class Router(object): request = request_factory(environ) threadlocals['request'] = request registry.has_listeners and registry.notify(NewRequest(request)) - traverser = registry.getAdapter(root, ITraverserFactory) + traverser = registry.queryAdapter(root, ITraverserFactory) + if traverser is None: + traverser = ModelGraphTraverser(root) tdict = _traverse(root, environ, traverser=traverser) if '_deprecation_warning' in tdict: warning = tdict.pop('_deprecation_warning') @@ -94,8 +97,11 @@ class Router(object): # bottleneck; since we're sure we're using a # webob.Request, we can go around its back and set stuff # into the environ directly - attrs = environ.setdefault('webob.adhoc_attrs', {}) - attrs.update(tdict) + if 'webob.adhoc_attrs' in environ: + attrs = environ.setdefault('webob.adhoc_attrs', {}) + attrs.update(tdict) + else: + environ['webob.adhoc_attrs'] = tdict def respond(response, view_name): registry.has_listeners and registry.notify( @@ -111,7 +117,6 @@ class Router(object): provides = map(providedBy, (context, request)) view_callable = registry.adapters.lookup( provides, IView, name=view_name, default=None) - if view_callable is None: if self.debug_notfound: |
