diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-09-18 22:43:40 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-09-18 22:43:40 +0000 |
| commit | 5e829c9e97fe034a8777ecb2b7c4271b24e7151e (patch) | |
| tree | 35d74e66534d1bbbcd7f90401080a3b94ea792b6 | |
| parent | 189420475f39638765cee8352b8fa393202c6991 (diff) | |
| download | pyramid-5e829c9e97fe034a8777ecb2b7c4271b24e7151e.tar.gz pyramid-5e829c9e97fe034a8777ecb2b7c4271b24e7151e.tar.bz2 pyramid-5e829c9e97fe034a8777ecb2b7c4271b24e7151e.zip | |
Accept a traverser rather than a registry in _traverse.
| -rw-r--r-- | repoze/bfg/includes/configure.zcml | 4 | ||||
| -rw-r--r-- | repoze/bfg/router.py | 5 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_traversal.py | 12 | ||||
| -rw-r--r-- | repoze/bfg/traversal.py | 11 |
4 files changed, 15 insertions, 17 deletions
diff --git a/repoze/bfg/includes/configure.zcml b/repoze/bfg/includes/configure.zcml index 60119b2c9..9a110d143 100644 --- a/repoze/bfg/includes/configure.zcml +++ b/repoze/bfg/includes/configure.zcml @@ -7,14 +7,14 @@ <include file="meta.zcml" /> <adapter - factory="repoze.bfg.traversal.ModelGraphTraverser" provides="repoze.bfg.interfaces.ITraverserFactory" + factory="repoze.bfg.traversal.ModelGraphTraverser" for="*" /> <adapter - factory="repoze.bfg.traversal.TraversalContextURL" provides="repoze.bfg.interfaces.IContextURL" + factory="repoze.bfg.traversal.TraversalContextURL" for="* repoze.bfg.interfaces.IRequest" /> diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py index 49ffcbf6d..4ee0f5215 100644 --- a/repoze/bfg/router.py +++ b/repoze/bfg/router.py @@ -16,6 +16,7 @@ from repoze.bfg.interfaces import IRootFactory from repoze.bfg.interfaces import IRouter from repoze.bfg.interfaces import IRoutesMapper from repoze.bfg.interfaces import ISettings +from repoze.bfg.interfaces import ITraverserFactory from repoze.bfg.interfaces import IView from repoze.bfg.authorization import ACLAuthorizationPolicy @@ -78,8 +79,8 @@ class Router(object): request = request_factory(environ) threadlocals['request'] = request registry.has_listeners and registry.notify(NewRequest(request)) - - tdict = _traverse(root, environ, registry) + traverser = registry.getAdapter(root, ITraverserFactory) + tdict = _traverse(root, environ, traverser=traverser) if '_deprecation_warning' in tdict: warning = tdict.pop('_deprecation_warning') if not warning in self.traverser_warned: diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py index 3041a271c..7c1acdacd 100644 --- a/repoze/bfg/tests/test_traversal.py +++ b/repoze/bfg/tests/test_traversal.py @@ -971,14 +971,12 @@ class UnderTraverseTests(unittest.TestCase): result = self._callFUT(context, None) self.assertEqual(result, {}) - def test_withregistry(self): - from zope.component import getSiteManager - registry = getSiteManager() - traverser = make_traverser({}) - self._registerTraverserFactory(traverser) + def test_with_traverser(self): + def traverser(environ): + return {'a':'1'} context = DummyContext() - result = self._callFUT(context, None, registry) - self.assertEqual(result, {}) + result = self._callFUT(context, None, traverser) + self.assertEqual(result, {'a':'1'}) def test_issixtuple(self): traverser = make_traverser((1,2,3,4,5,6)) diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index dbc9ae709..157a9aac7 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -270,15 +270,14 @@ def traverse(model, path): return _traverse(model, {'PATH_INFO':path}) -def _traverse(model, environ, registry=None): - if registry is None: +def _traverse(model, environ, traverser=None): + if traverser is None: traverser = ITraverserFactory(model) - else: - # for speed - traverser = registry.getAdapter(model, ITraverserFactory) + result = traverser(environ) - deprecation_warning = None + if result.__class__ is not dict: # isinstance slightly slower + deprecation_warning = None try: # b/w compat for 6-arg returning ITraversers (0.7.1 til 0.8a7) ctx, view_name, subpath, traversed, vroot, vroot_path = result |
