summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-03-04 09:36:34 -0500
committerTim Graham <timograham@gmail.com>2015-03-10 19:24:46 -0400
commit3ed9c7bdfe9f40d31dadb6734a5692c8b9d6d6dc (patch)
tree7c9e14442e7b6ee74d3a247eb9376fc3f55e20fe
parent7b1a67cce52e5c191fbfa1bca501c6f0222db019 (diff)
Fixed #24471 -- Enhanced urlize regex to exclude quotes and angle brackets.
-rw-r--r--django/utils/html.py2
-rw-r--r--tests/template_tests/filter_tests/test_urlize.py20
2 files changed, 21 insertions, 1 deletions
diff --git a/django/utils/html.py b/django/utils/html.py
index 779155e88c..9f9fbdb2a5 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -26,7 +26,7 @@ WRAPPING_PUNCTUATION = [('(', ')'), ('<', '>'), ('[', ']'), ('&lt;', '&gt;'), ('
DOTS = ['&middot;', '*', '\u2022', '&#149;', '&bull;', '&#8226;']
unencoded_ampersands_re = re.compile(r'&(?!(\w+|#\d+);)')
-word_split_re = re.compile(r'(\s+)')
+word_split_re = re.compile(r'''([\s<>"']+)''')
simple_url_re = re.compile(r'^https?://\[?\w', re.IGNORECASE)
simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|edu|gov|int|mil|net|org)($|/.*)$', re.IGNORECASE)
simple_email_re = re.compile(r'^\S+@\S+\.\S+$')
diff --git a/tests/template_tests/filter_tests/test_urlize.py b/tests/template_tests/filter_tests/test_urlize.py
index 38a0a3e3ed..c2efdd3e17 100644
--- a/tests/template_tests/filter_tests/test_urlize.py
+++ b/tests/template_tests/filter_tests/test_urlize.py
@@ -106,6 +106,26 @@ class FunctionTests(SimpleTestCase):
'<a href="http://djangoproject.org/" rel="nofollow">djangoproject.org/</a>',
)
+ def test_url_split_chars(self):
+ # Quotes (single and double) and angle brackets shouldn't be considered
+ # part of URLs.
+ self.assertEqual(
+ urlize('www.server.com"abc'),
+ '<a href="http://www.server.com" rel="nofollow">www.server.com</a>&quot;abc',
+ )
+ self.assertEqual(
+ urlize('www.server.com\'abc'),
+ '<a href="http://www.server.com" rel="nofollow">www.server.com</a>&#39;abc',
+ )
+ self.assertEqual(
+ urlize('www.server.com<abc'),
+ '<a href="http://www.server.com" rel="nofollow">www.server.com</a>&lt;abc',
+ )
+ self.assertEqual(
+ urlize('www.server.com>abc'),
+ '<a href="http://www.server.com" rel="nofollow">www.server.com</a>&gt;abc',
+ )
+
def test_email(self):
self.assertEqual(
urlize('info@djangoproject.org'),