From 09d21f3f9f440812049746f0573cfa7f6aa8c7e5 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sat, 12 Jul 2008 03:20:57 +0000 Subject: THe redirect-on-slash story isn't part of the publisher. --- repoze/bfg/router.py | 30 +++++++++++------------------- repoze/bfg/tests/test_router.py | 24 ------------------------ 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() -- cgit v1.2.3