summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--repoze/bfg/router.py9
-rw-r--r--repoze/bfg/tests/test_traversal.py13
-rw-r--r--repoze/bfg/traversal.py8
3 files changed, 9 insertions, 21 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index 41b8ee553..714249791 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -9,7 +9,6 @@ from repoze.bfg.interfaces import INotFoundView
from repoze.bfg.interfaces import IRootFactory
from repoze.bfg.interfaces import IRouter
from repoze.bfg.interfaces import ISettings
-from repoze.bfg.interfaces import ITraverserFactory
from repoze.bfg.interfaces import IView
from repoze.bfg.configuration import make_registry
@@ -21,7 +20,6 @@ from repoze.bfg.exceptions import Forbidden
from repoze.bfg.exceptions import NotFound
from repoze.bfg.request import request_factory
from repoze.bfg.threadlocal import manager
-from repoze.bfg.traversal import ModelGraphTraverser
from repoze.bfg.traversal import _traverse
from repoze.bfg.view import default_forbidden_view
from repoze.bfg.view import default_notfound_view
@@ -60,7 +58,7 @@ class Router(object):
manager = self.threadlocal_manager
threadlocals = {'registry':registry, 'request':None}
manager.push(threadlocals)
-
+
try:
root = self.root_factory(environ)
request = request_factory(environ)
@@ -75,10 +73,7 @@ class Router(object):
threadlocals['request'] = request
registry.has_listeners and registry.notify(NewRequest(request))
- traverser = registry.queryAdapter(root, ITraverserFactory)
- if traverser is None:
- traverser = ModelGraphTraverser(root)
- tdict = _traverse(root, environ, traverser=traverser)
+ tdict = _traverse(root, environ)
context, view_name, subpath, traversed, vroot, vroot_path = (
tdict['context'], tdict['view_name'], tdict['subpath'],
tdict['traversed'], tdict['virtual_root'],
diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py
index 69a8b4b6f..b50654516 100644
--- a/repoze/bfg/tests/test_traversal.py
+++ b/repoze/bfg/tests/test_traversal.py
@@ -970,10 +970,10 @@ class UnderTraverseTests(unittest.TestCase):
def tearDown(self):
cleanUp()
-
- def _callFUT(self, context, environ, registry=None):
+
+ def _callFUT(self, context, environ):
from repoze.bfg.traversal import _traverse
- return _traverse(context, environ, registry)
+ return _traverse(context, environ)
def _registerTraverserFactory(self, traverser):
import zope.component
@@ -994,13 +994,6 @@ class UnderTraverseTests(unittest.TestCase):
result = self._callFUT(context, None)
self.assertEqual(result, {})
- def test_with_traverser(self):
- def traverser(environ):
- return {'a':'1'}
- context = DummyContext()
- result = self._callFUT(context, None, traverser)
- self.assertEqual(result, {'a':'1'})
-
def make_traverser(result):
class DummyTraverser(object):
def __init__(self, context):
diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py
index 0e87a0d37..80ab060ec 100644
--- a/repoze/bfg/traversal.py
+++ b/repoze/bfg/traversal.py
@@ -272,11 +272,10 @@ def traverse(model, path):
return _traverse(model, {'PATH_INFO':path})
-def _traverse(model, environ, traverser=None):
+def _traverse(model, environ):
+ traverser = queryAdapter(model, ITraverserFactory)
if traverser is None:
- traverser = queryAdapter(model, ITraverserFactory)
- if traverser is None:
- traverser = ModelGraphTraverser(model)
+ traverser = ModelGraphTraverser(model)
result = traverser(environ)
return result
@@ -474,6 +473,7 @@ class ModelGraphTraverser(object):
""" A model graph traverser that should be used (for speed) when
every object in the graph supplies a ``__name__`` and
``__parent__`` attribute (ie. every object 'provides ILocation') ."""
+
classProvides(ITraverserFactory)
implements(ITraverser)
def __init__(self, root):