Commit 646f2f61 authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #7494 -- Fixed build_absolute_url() for some types of (uncommon) URLs.

Patch from tom@almostobsolete.net and RobotAdam.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8490 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 3dd69a96
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
import os
import re
from Cookie import SimpleCookie, CookieError
from pprint import pformat
from urllib import urlencode
@@ -18,6 +19,8 @@ from utils import *

RESERVED_CHARS="!*'();:@&=+$,/?%#[]"

absolute_http_url_re = re.compile(r"^https?://", re.I)

class Http404(Exception):
    pass

@@ -65,7 +68,7 @@ class HttpRequest(object):
        """
        if not location:
            location = self.get_full_path()
        if not ':' in location:
        if not absolute_http_url_re.match(location):
            current_uri = '%s://%s%s' % (self.is_secure() and 'https' or 'http',
                                         self.get_host(), self.path)
            location = urljoin(current_uri, location)
+8 −0
Original line number Diff line number Diff line
@@ -36,4 +36,12 @@ META:{}>
>>> from django.http import parse_cookie
>>> parse_cookie('invalid:key=true')
{}

>>> request = HttpRequest()
>>> print request.build_absolute_uri(location="https://www.example.com/asdf")
https://www.example.com/asdf
>>> request.get_host = lambda: 'www.example.com'
>>> request.path = ''
>>> print request.build_absolute_uri(location="/path/with:colons")
http://www.example.com/path/with:colons
"""