summaryrefslogtreecommitdiff
path: root/repoze/bfg/traversal.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-11-23 04:51:35 +0000
committerChris McDonough <chrism@agendaless.com>2009-11-23 04:51:35 +0000
commit6fec211488f87f9207fda9c39b21e83c6359c727 (patch)
tree0ad5de2211e9b71aed1d12ad3cbc97efd50b7c22 /repoze/bfg/traversal.py
parent8dd3ce0142e8055cfc6c9e793b5c781c4691e2c0 (diff)
downloadpyramid-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.py18
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()