summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2012-02-04 16:05:48 +0000
committerJannis Leidel <jannis@leidel.info>2012-02-04 16:05:48 +0000
commite734477bd739de737d98deef91dfe9f7b8c1c030 (patch)
tree575cfd28399259d5abf1a4f6c622a843796c9cda
parent4d8a0f8902dd55348fbaf897048bef1cba285f05 (diff)
Fixed #17592 -- Handle URLs starting with a dot when using urlize. Thanks, Claude Paroz.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17435 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/utils/html.py5
-rw-r--r--tests/regressiontests/defaultfilters/tests.py4
2 files changed, 8 insertions, 1 deletions
diff --git a/django/utils/html.py b/django/utils/html.py
index de6b35dfd4..78359f97f6 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -168,7 +168,10 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
url = smart_urlquote('http://%s' % middle)
elif not ':' in middle and simple_email_re.match(middle):
local, domain = middle.rsplit('@', 1)
- domain = domain.encode('idna')
+ try:
+ domain = domain.encode('idna')
+ except UnicodeError:
+ continue
url = 'mailto:%s@%s' % (local, domain)
nofollow_attr = ''
diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py
index 94e8c43430..36f8f5851c 100644
--- a/tests/regressiontests/defaultfilters/tests.py
+++ b/tests/regressiontests/defaultfilters/tests.py
@@ -288,6 +288,10 @@ class DefaultFiltersTests(TestCase):
self.assertEqual(urlize('usa.gov'),
u'<a href="http://usa.gov" rel="nofollow">usa.gov</a>')
+ # Check urlize don't crash on invalid email with dot-starting domain - see #17592
+ self.assertEqual(urlize('email@.stream.ru'),
+ u'email@.stream.ru')
+
def test_wordcount(self):
self.assertEqual(wordcount(''), 0)
self.assertEqual(wordcount(u'oneword'), 1)