summaryrefslogtreecommitdiff
path: root/repoze/bfg/router.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-09-20 02:54:46 +0000
committerChris McDonough <chrism@agendaless.com>2009-09-20 02:54:46 +0000
commit160f01439dc3e0d865b2e77bb4a9a7c9e7a16c1a (patch)
tree5eb0dea7958a161806ffd6025e7cbb8db729e446 /repoze/bfg/router.py
parente1205ca0f073ac6bbe992a507f8979f9ebcff5cf (diff)
downloadpyramid-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.py13
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: