1
0
mirror of https://github.com/django/django.git synced 2025-06-07 20:49:11 +00:00

cope with unsplittable urls in smarl_urlquote.

This commit is contained in:
Tom Insam 2012-12-03 12:13:24 +00:00
parent 161cafb6f6
commit 74809fdcc7

View File

@ -150,6 +150,7 @@ fix_ampersands = allow_lazy(fix_ampersands, six.text_type)
def smart_urlquote(url): def smart_urlquote(url):
"Quotes a URL if it isn't already quoted." "Quotes a URL if it isn't already quoted."
# Handle IDN before quoting. # Handle IDN before quoting.
try:
scheme, netloc, path, query, fragment = urlsplit(url) scheme, netloc, path, query, fragment = urlsplit(url)
try: try:
netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
@ -157,6 +158,9 @@ def smart_urlquote(url):
pass pass
else: else:
url = urlunsplit((scheme, netloc, path, query, fragment)) url = urlunsplit((scheme, netloc, path, query, fragment))
except ValueError:
# invalid IPv6 URL (normally square brackets in hostname part).
pass
# An URL is considered unquoted if it contains no % characters or # An URL is considered unquoted if it contains no % characters or
# contains a % not followed by two hexadecimal digits. See #9655. # contains a % not followed by two hexadecimal digits. See #9655.