summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-27 22:38:56 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-27 22:38:56 +0000
commit65f3f8ea3964706002da64b6751d6302f426c3da (patch)
tree88719df106b01a0f3bca33c840990fb27c9edc17
parent7b75a8f9f4550df6ea82e8ee2b3452d9478bdb12 (diff)
downloadpyramid-65f3f8ea3964706002da64b6751d6302f426c3da.tar.gz
pyramid-65f3f8ea3964706002da64b6751d6302f426c3da.tar.bz2
pyramid-65f3f8ea3964706002da64b6751d6302f426c3da.zip
Whoops, wasn't quite done adding vhost support to traverser yet.
-rw-r--r--repoze/bfg/includes/configure.zcml4
-rw-r--r--repoze/bfg/tests/test_traversal.py13
-rw-r--r--repoze/bfg/traversal.py6
3 files changed, 21 insertions, 2 deletions
diff --git a/repoze/bfg/includes/configure.zcml b/repoze/bfg/includes/configure.zcml
index 7a07e1775..33e1aed39 100644
--- a/repoze/bfg/includes/configure.zcml
+++ b/repoze/bfg/includes/configure.zcml
@@ -15,7 +15,7 @@
<adapter
factory="repoze.bfg.traversal.TraversalContextURL"
provides="repoze.bfg.interfaces.IContextURL"
- for="*"
+ for="* repoze.bfg.interfaces.IRequest"
/>
<!-- URL dispatch adapters -->
@@ -29,7 +29,7 @@
<adapter
factory="repoze.bfg.urldispatch.RoutesContextURL"
provides="repoze.bfg.interfaces.IContextURL"
- for="repoze.bfg.interfaces.IRoutesContext"
+ for="repoze.bfg.interfaces.IRoutesContext repoze.bfg.interfaces.IRequest"
/>
<include file="meta.zcml" />
diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py
index 48b968458..4782ab264 100644
--- a/repoze/bfg/tests/test_traversal.py
+++ b/repoze/bfg/tests/test_traversal.py
@@ -135,6 +135,19 @@ class ModelGraphTraverserTests(unittest.TestCase):
self.assertEqual(name, 'foo')
self.assertEqual(subpath, [])
+ def test_call_with_vh_root(self):
+ environ = self._getEnviron(PATH_INFO='/baz',
+ HTTP_X_VHM_ROOT='/foo/bar')
+ baz = DummyContext()
+ bar = DummyContext(baz)
+ foo = DummyContext(bar)
+ root = DummyContext(foo)
+ policy = self._makeOne(root)
+ ctx, name, subpath = policy(environ)
+ self.assertEqual(ctx, baz)
+ self.assertEqual(name, '')
+ self.assertEqual(subpath, [])
+
def test_call_with_ILocation_root_proxies(self):
baz = DummyContext()
bar = DummyContext(baz)
diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py
index 76172c18c..476f119b9 100644
--- a/repoze/bfg/traversal.py
+++ b/repoze/bfg/traversal.py
@@ -228,6 +228,12 @@ class ModelGraphTraverser(object):
path = environ['PATH_INFO']
except KeyError:
path = '/'
+ try:
+ vroot = environ[VH_ROOT_KEY]
+ path = vroot + path
+ except KeyError:
+ pass
+
path = list(traversal_path(path))
locatable = self.locatable
step = self._step