diff options
| author | Malthe Borch <mborch@gmail.com> | 2009-10-26 12:27:34 +0000 |
|---|---|---|
| committer | Malthe Borch <mborch@gmail.com> | 2009-10-26 12:27:34 +0000 |
| commit | 0d13f6596c2cf38a611183e01a7f73173d5d6faa (patch) | |
| tree | 91482267042f6403dab57816615e1e35c24b99ce /repoze/bfg/traversal.py | |
| parent | 077c3c521b1a3cc3b17449f3360f2a0532d50dc7 (diff) | |
| download | pyramid-0d13f6596c2cf38a611183e01a7f73173d5d6faa.tar.gz pyramid-0d13f6596c2cf38a611183e01a7f73173d5d6faa.tar.bz2 pyramid-0d13f6596c2cf38a611183e01a7f73173d5d6faa.zip | |
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.
Diffstat (limited to 'repoze/bfg/traversal.py')
| -rw-r--r-- | repoze/bfg/traversal.py | 9 |
1 files changed, 6 insertions, 3 deletions
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 |
