diff options
| author | Tim Graham <timograham@gmail.com> | 2015-03-04 09:36:34 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-03-10 19:24:46 -0400 |
| commit | 3ed9c7bdfe9f40d31dadb6734a5692c8b9d6d6dc (patch) | |
| tree | 7c9e14442e7b6ee74d3a247eb9376fc3f55e20fe | |
| parent | 7b1a67cce52e5c191fbfa1bca501c6f0222db019 (diff) | |
Fixed #24471 -- Enhanced urlize regex to exclude quotes and angle brackets.
| -rw-r--r-- | django/utils/html.py | 2 | ||||
| -rw-r--r-- | tests/template_tests/filter_tests/test_urlize.py | 20 |
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 = [('(', ')'), ('<', '>'), ('[', ']'), ('<', '>'), (' DOTS = ['·', '*', '\u2022', '•', '•', '•'] 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>"abc', + ) + self.assertEqual( + urlize('www.server.com\'abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a>'abc', + ) + self.assertEqual( + urlize('www.server.com<abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a><abc', + ) + self.assertEqual( + urlize('www.server.com>abc'), + '<a href="http://www.server.com" rel="nofollow">www.server.com</a>>abc', + ) + def test_email(self): self.assertEqual( urlize('info@djangoproject.org'), |
