diff options
| -rw-r--r-- | CHANGES.txt | 4 | ||||
| -rw-r--r-- | docs/narr/hooks.rst | 3 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_router.py | 40 | ||||
| -rw-r--r-- | repoze/bfg/traversal.py | 9 |
4 files changed, 6 insertions, 50 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index b112a996a..b4c04304e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -4,10 +4,6 @@ Next release Features -------- -- The root factory may now return an object which implements - ``ITraverser`` directly. In this case, no adaptation is done before - traversal. - - Add ``path_info`` view configuration predicate. - ``paster bfgshell`` now supports IPython if it's available for diff --git a/docs/narr/hooks.rst b/docs/narr/hooks.rst index 6babeace0..d2020af0d 100644 --- a/docs/narr/hooks.rst +++ b/docs/narr/hooks.rst @@ -278,9 +278,6 @@ when the application :term:`root factory` returned an instance of the ``myapp.models.MyRoot`` object. Otherwise it would use the default :mod:`repoze.bfg` traverser to do traversal. -Note that the root object may itself implement ``ITraverser`` in which -case adaptation is skipped. - Example implementations of alternate traversers can be found "in the wild" within `repoze.bfg.traversalwrapper <http://pypi.python.org/pypi/repoze.bfg.traversalwrapper>`_ and diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index 6c0497653..13a5bd11a 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -28,9 +28,10 @@ class TestRouter(unittest.TestCase): settings.update(kw) self.registry.registerUtility(settings, ISettings) - def _makeTraverserFactory(self, context, view_name='', subpath=None, + def _registerTraverserFactory(self, context, view_name='', subpath=None, traversed=None, virtual_root=None, virtual_root_path=None, **kw): + from repoze.bfg.interfaces import ITraverser if virtual_root is None: virtual_root = context @@ -41,13 +42,8 @@ class TestRouter(unittest.TestCase): if virtual_root_path is None: virtual_root_path = [] - from zope.interface import implements - from repoze.bfg.interfaces import ITraverser - class DummyTraverserFactory: - implements(ITraverser) - - def __init__(self, root=None): + def __init__(self, root): self.root = root def __call__(self, path): @@ -61,11 +57,6 @@ class TestRouter(unittest.TestCase): kw.update(values) return kw - return DummyTraverserFactory - - def _registerTraverserFactory(self, *args, **kwargs): - DummyTraverserFactory = self._makeTraverserFactory(*args, **kwargs) - from repoze.bfg.interfaces import ITraverser self.registry.registerAdapter(DummyTraverserFactory, (None,), ITraverser, name='') @@ -156,31 +147,6 @@ class TestRouter(unittest.TestCase): self.failIf('debug_notfound' in result[0]) self.assertEqual(len(logger.messages), 0) - def test_call_traverser_model(self): - environ = self._makeEnviron() - from zope.interface import Interface - class IContext(Interface): - pass - context = DummyContext() - from zope.interface import directlyProvides - directlyProvides(context, IContext) - RootFactory = self._makeTraverserFactory(context, view_name='def') - root = RootFactory() - self._registerRootFactory(root) - from repoze.bfg.interfaces import IRequest - response = DummyResponse() - response.app_iter = ['Hello world'] - view = DummyView(response) - self._registerView(view, 'def', IContext, IRequest) - logger = self._registerLogger() - router = self._makeOne() - start_response = DummyStartResponse() - result = router(environ, start_response) - self.assertEqual(result, ['Hello world']) - headers = start_response.headers - status = start_response.status - self.assertEqual(status, '200 OK') - def test_has_webob_adhoc_attrs(self): environ = self._makeEnviron() environ['webob.adhoc_attrs'] = {} diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index 580225566..11e5ca806 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -273,12 +273,9 @@ def traverse(model, path): return _traverse(model, {'PATH_INFO':path}) def _traverse(model, environ): - if ITraverser.providedBy(model): - traverser = model - else: - traverser = queryAdapter(model, ITraverser) - if traverser is None: - traverser = ModelGraphTraverser(model) + traverser = queryAdapter(model, ITraverser) + if traverser is None: + traverser = ModelGraphTraverser(model) result = traverser(environ) return result |
