From adc3c73a993b575143259949fe59858f2dd311b5 Mon Sep 17 00:00:00 2001 From: Malthe Borch Date: Mon, 26 Oct 2009 10:56:50 +0000 Subject: Refactor; the ``_traverse`` is only used internally; the ``traverser`` argument is never used. Note that this refactoring does away with a surplus traverser factory lookup. --- repoze/bfg/router.py | 9 ++------- repoze/bfg/tests/test_traversal.py | 13 +++---------- repoze/bfg/traversal.py | 8 ++++---- 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): -- cgit v1.2.3