diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-11-23 04:51:35 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-11-23 04:51:35 +0000 |
| commit | 6fec211488f87f9207fda9c39b21e83c6359c727 (patch) | |
| tree | 0ad5de2211e9b71aed1d12ad3cbc97efd50b7c22 /repoze/bfg/traversal.py | |
| parent | 8dd3ce0142e8055cfc6c9e793b5c781c4691e2c0 (diff) | |
| download | pyramid-6fec211488f87f9207fda9c39b21e83c6359c727.tar.gz pyramid-6fec211488f87f9207fda9c39b21e83c6359c727.tar.bz2 pyramid-6fec211488f87f9207fda9c39b21e83c6359c727.zip | |
- The ``repoze.bfg.scripting.get_root`` API now uses a 'real' WebOb
request rather than a FakeRequest when it sets up the request as a
threadlocal.
- The ``repoze.bfg.traversal.traverse`` API now uses a 'real' WebOb
request rather than a FakeRequest when it calls the traverser.
- The ``repoze.bfg.request.FakeRequest`` class has been removed.
``repoze.bfg.url.route_url``
``repoze.bfg.url.model_url``
``repoze.bfg.url.static_url``
``repoze.bfg.traversal.virtual_root``
Each of these functions now expects to be called with a request
object that has a ``registry`` attribute which represents the
current ZCA registry.
Get rid of extraneous uses of ZCA threadlocal API.
Diffstat (limited to 'repoze/bfg/traversal.py')
| -rw-r--r-- | repoze/bfg/traversal.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index b46fb83c7..daf307c73 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -1,8 +1,5 @@ import urllib -from zope.component import queryMultiAdapter -from zope.component import queryAdapter - from zope.interface import implements from zope.interface.interfaces import IInterface @@ -14,7 +11,8 @@ from repoze.bfg.interfaces import VH_ROOT_KEY from repoze.bfg.location import lineage from repoze.bfg.encode import url_quote -from repoze.bfg.request import FakeRequest +from repoze.bfg.request import Request +from repoze.bfg.threadlocal import get_current_registry def find_root(model): """ Find the root node in the graph to which ``model`` @@ -269,8 +267,10 @@ def traverse(model, path): if path and path[0] == '/': model = find_root(model) - request = FakeRequest({'PATH_INFO':path}) - traverser = queryAdapter(model, ITraverser) + request = Request.blank(path) + reg = get_current_registry() + request.registry = reg + traverser = reg.queryAdapter(model, ITraverser) if traverser is None: traverser = ModelGraphTraverser(model) @@ -347,7 +347,11 @@ def virtual_root(model, request): is called with a ``model`` argument which is a context obtained via URL dispatch, the model passed in will be returned unconditonally.""" - urlgenerator = queryMultiAdapter((model, request), IContextURL) + try: + reg = request.registry + except AttributeError: + reg = get_current_registry() # b/c + urlgenerator = reg.queryMultiAdapter((model, request), IContextURL) if urlgenerator is None: urlgenerator = TraversalContextURL(model, request) return urlgenerator.virtual_root() |
