From 47f60e49d1ad58159e5294b3cf399b82842b2458 Mon Sep 17 00:00:00 2001 From: Bill Fenner Date: Tue, 12 Jun 2007 17:41:15 +0000 Subject: [PATCH] * Add leading "/" to url. * Remove extra "/" in case the database has extra leading or trailing slashes. * Catch KeyError, not IndexError, since that's what gets thrown in the case I was thinking about. - Legacy-Id: 335 --- ietf/redirects/views.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ietf/redirects/views.py b/ietf/redirects/views.py index 18ed82a1a..3d19c6b76 100644 --- a/ietf/redirects/views.py +++ b/ietf/redirects/views.py @@ -10,7 +10,7 @@ def redirect(request, path="", script=""): redir = Redirect.objects.get(cgi=script) except Redirect.DoesNotExist: raise Http404 - url = redir.url + "/" + url = "/" + redir.url + "/" (rest, remove) = (redir.rest, redir.remove) try: cmd = redir.commands.all().get(command=request.REQUEST['command']) @@ -21,7 +21,7 @@ def redirect(request, path="", script=""): remove = cmd.suffix.remove except Command.DoesNotExist: pass # it's ok, there's no more-specific request. - except IndexError: + except KeyError: pass # it's ok, request didn't have 'command'. try: url += rest % request.REQUEST @@ -29,6 +29,8 @@ def redirect(request, path="", script=""): # rest had something in it that request didn't have, so just # redirect to the root of the tool. pass + # Be generous in what you accept: collapse multiple slashes + url = re.sub(r'/+', '/', url) if remove: url = re.sub(re.escape(remove) + "/?$", "", url) return HttpResponseRedirect(url)