summaryrefslogtreecommitdiff
path: root/repoze/bfg/url.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/url.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/url.py')
-rw-r--r--repoze/bfg/url.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/repoze/bfg/url.py b/repoze/bfg/url.py
index a39069642..51e1b109e 100644
--- a/repoze/bfg/url.py
+++ b/repoze/bfg/url.py
@@ -2,9 +2,6 @@
import os
-from zope.component import getUtility
-from zope.component import queryMultiAdapter
-
from repoze.lru import lru_cache
from repoze.bfg.interfaces import IContextURL
@@ -13,8 +10,9 @@ from repoze.bfg.interfaces import IRoutesMapper
from repoze.bfg.encode import urlencode
from repoze.bfg.path import caller_package
from repoze.bfg.static import StaticRootFactory
-from repoze.bfg.traversal import TraversalContextURL
+from repoze.bfg.threadlocal import get_current_registry
from repoze.bfg.traversal import quote_path_segment
+from repoze.bfg.traversal import TraversalContextURL
def route_url(route_name, request, *elements, **kw):
"""Generates a fully qualified URL for a named BFG route.
@@ -89,7 +87,11 @@ def route_url(route_name, request, *elements, **kw):
due to missing replacement names. Extra replacement names are
ignored.
"""
- mapper = getUtility(IRoutesMapper)
+ try:
+ reg = request.registry
+ except AttributeError:
+ reg = get_current_registry() # b/c
+ mapper = reg.getUtility(IRoutesMapper)
path = mapper.generate(route_name, kw) # raises KeyError if generate fails
anchor = ''
@@ -195,8 +197,12 @@ def model_url(model, request, *elements, **kw):
will always follow the query element,
e.g. ``http://example.com?foo=1#bar``.
"""
+ try:
+ reg = request.registry
+ except AttributeError:
+ reg = get_current_registry() # b/c
- context_url = queryMultiAdapter((model, request), IContextURL)
+ context_url = reg.queryMultiAdapter((model, request), IContextURL)
if context_url is None:
context_url = TraversalContextURL(model, request)
model_url = context_url()
@@ -263,8 +269,13 @@ def static_url(path, request, **kw):
# to the package in which the caller's module is defined.
package = caller_package(level=2)
path = '%s:%s' % (package.__name__, path)
+
+ try:
+ reg = request.registry
+ except AttributeError:
+ reg = get_current_registry() # b/c
- mapper = getUtility(IRoutesMapper)
+ mapper = reg.getUtility(IRoutesMapper)
routes = mapper.get_routes()
for route in routes: