summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-12 03:20:57 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-12 03:20:57 +0000
commit09d21f3f9f440812049746f0573cfa7f6aa8c7e5 (patch)
tree03f7449bb205261cc04c77c604d6306e46c87b9f
parent2d74688f6564c325077044c4b870c6f966baad91 (diff)
downloadpyramid-09d21f3f9f440812049746f0573cfa7f6aa8c7e5.tar.gz
pyramid-09d21f3f9f440812049746f0573cfa7f6aa8c7e5.tar.bz2
pyramid-09d21f3f9f440812049746f0573cfa7f6aa8c7e5.zip
THe redirect-on-slash story isn't part of the publisher.
-rw-r--r--repoze/bfg/router.py30
-rw-r--r--repoze/bfg/tests/test_router.py24
2 files changed, 11 insertions, 43 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index bd7df2c94..56a692856 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -15,9 +15,8 @@ from repoze.bfg.interfaces import IRequest
_marker = ()
class Router:
- def __init__(self, root_policy, default_redirects=True):
+ def __init__(self, root_policy):
self.root_policy = root_policy
- self.default_redirects = default_redirects
def __call__(self, environ, start_response):
request = Request(environ)
@@ -26,27 +25,20 @@ class Router:
path = environ.get('PATH_INFO', '/')
traverser = getMultiAdapter((root, request), IPublishTraverserFactory)
context, name, subpath = traverser(path)
- if self.default_redirects and (not name) and (not path.endswith('/')):
- # if this is the default view of the context, and the URL
- # doesn't end in a slash, redirect to the url + '/' (so we
- # don't have to play base tag games)
- app = HTTPFound(add_slash=True)
+ request.subpath = subpath
+ request.view_name = name
+ app = queryMultiAdapter((context, request), IViewFactory, name=name,
+ default=_marker)
+ if app is _marker:
+ app = HTTPNotFound(request.url)
else:
- request.subpath = subpath
- request.view_name = name
- app = queryMultiAdapter((context, request), IViewFactory, name=name,
- default=_marker)
- if app is _marker:
- app = HTTPNotFound(request.url)
- else:
- app = getMultiAdapter((context, request, app),
- IWSGIApplicationFactory)
+ app = getMultiAdapter((context, request, app),
+ IWSGIApplicationFactory)
return app(environ, start_response)
-def make_app(root_policy, package=None, default_redirects=True,
- filename='configure.zcml'):
+def make_app(root_policy, package=None, filename='configure.zcml'):
import zope.configuration.xmlconfig
zope.configuration.xmlconfig.file(filename, package=package)
- return Router(root_policy, default_redirects)
+ return Router(root_policy)
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index 5d866523e..ae0d1f5bf 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -60,30 +60,6 @@ class RouterTests(unittest.TestCase, PlacelessSetup):
self.assertEqual(status, '404 Not Found')
self.failUnless('http://localhost:8080' in result[0], result)
- def test_call_default_view_redirect(self):
- rootpolicy = make_rootpolicy(None)
- context = DummyContext()
- traversalfactory = make_traversal_factory(context, '', [])
- response = DummyResponse()
- viewfactory = make_view_factory(response)
- wsgifactory = make_wsgi_factory('200 OK', (), ['Hello world'])
- environ = self._makeEnviron(PATH_INFO='/doesnt/end/in/slash')
- self._registerTraverserFactory(traversalfactory, '', None, None)
- self._registerViewFactory(viewfactory, '', None, None)
- self._registerWSGIFactory(wsgifactory, '', None, None, None)
- router = self._makeOne(rootpolicy)
- start_response = DummyStartResponse()
- result = router(environ, start_response)
- headers = start_response.headers
- self.assertEqual(len(headers), 3)
- self.assertEqual(
- headers[0],
- ('content-type', 'text/html; charset=UTF-8'))
- self.assertEqual(
- headers[1],
- ('location', 'http://localhost:8080/doesnt/end/in/slash/'))
- self.assertEqual(start_response.status, '302 Found')
-
def test_call_view_registered_nonspecific_default_path(self):
rootpolicy = make_rootpolicy(None)
context = DummyContext()