From 0d13f6596c2cf38a611183e01a7f73173d5d6faa Mon Sep 17 00:00:00 2001 From: Malthe Borch Date: Mon, 26 Oct 2009 12:27:34 +0000 Subject: The root factory may now return an object which implements ``ITraverser`` directly. In this case, no adaptation is done before traversal. This feature is added such that a routes factory can implement its own traversal logic without establishing an artificial context only to get a hook into the traversal machinery. --- repoze/bfg/traversal.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'repoze/bfg/traversal.py') diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index 11e5ca806..580225566 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -273,9 +273,12 @@ def traverse(model, path): return _traverse(model, {'PATH_INFO':path}) def _traverse(model, environ): - traverser = queryAdapter(model, ITraverser) - if traverser is None: - traverser = ModelGraphTraverser(model) + if ITraverser.providedBy(model): + traverser = model + else: + traverser = queryAdapter(model, ITraverser) + if traverser is None: + traverser = ModelGraphTraverser(model) result = traverser(environ) return result -- cgit v1.2.3