Loading django/utils/html.py +6 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ punctuation_re = re.compile('^(?P<lead>(?:%s)*)(?P<middle>.*?)(?P<trail>(?:%s)*) ('|'.join([re.escape(x) for x in LEADING_PUNCTUATION]), '|'.join([re.escape(x) for x in TRAILING_PUNCTUATION]))) simple_url_re = re.compile(r'^https?://\w') simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|net|org)$') simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|edu|gov|int|mil|net|org|[a-z]{2})$') simple_email_re = re.compile(r'^\S+@\S+\.\S+$') link_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\s>]+') html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE) Loading Loading @@ -127,10 +127,11 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): """ Converts any URLs in text into clickable links. Works on http://, https://, www. links and links ending in .org, .net or .com. Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens) and it'll still do the right thing. Works on http://, https://, www. links, and also on links ending in one of the original seven gTLDs (.com, .edu, .gov, .int, .mil, .net, and .org) or a two-letter ccTLD. Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens) and it'll still do the right thing. If trim_url_limit is not None, the URLs in link text longer than this limit will truncated to trim_url_limit-3 characters and appended with an elipsis. Loading docs/ref/templates/builtins.txt +13 −6 Original line number Diff line number Diff line Loading @@ -2226,13 +2226,20 @@ urlize Converts URLs in text into clickable links. Works on links prefixed with ``http://``, ``https://``, or ``www.``. For example, ``http://goo.gl/aia1t`` will get converted but ``goo.gl/aia1t`` won't. This template tag works on several kinds of links: Also works on domain-only links ending in one of the common ``.com``, ``.net``, or ``.org`` top level domains. For example, ``djangoproject.com`` will still get converted. - links prefixed with ``http://``, ``https://``, or ``www.``. For example, ``http://goo.gl/aia1t`` will get converted but ``goo.gl/aia1t`` won't. - domain-only links ending in one of the original top level domains (``.com``, ``.edu``, ``.gov``, ``.int``, ``.mil``, ``.net``, and ``.org``). For example, ``djangoproject.com`` also gets converted. - domain-only links ending in a dot followed by two letters. This covers most country codes. For example, ``djangocon.eu`` still gets converted. .. versionchanged:: 1.4 Until Django 1.4, only the ``.com``, ``.net`` and ``.org`` suffixes were supported for domain-only links. Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens) and ``urlize`` will still do the right thing. Loading tests/regressiontests/defaultfilters/tests.py +6 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,12 @@ class DefaultFiltersTests(TestCase): self.assertEqual(urlize('http://@foo.com'), u'http://@foo.com') # Check urlize accepts more TLDs - see #16656 self.assertEqual(urlize('usa.gov'), u'<a href="http://usa.gov" rel="nofollow">usa.gov</a>') self.assertEqual(urlize('europa.eu'), u'<a href="http://europa.eu" rel="nofollow">europa.eu</a>') def test_wordcount(self): self.assertEqual(wordcount(''), 0) self.assertEqual(wordcount(u'oneword'), 1) Loading Loading
django/utils/html.py +6 −5 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ punctuation_re = re.compile('^(?P<lead>(?:%s)*)(?P<middle>.*?)(?P<trail>(?:%s)*) ('|'.join([re.escape(x) for x in LEADING_PUNCTUATION]), '|'.join([re.escape(x) for x in TRAILING_PUNCTUATION]))) simple_url_re = re.compile(r'^https?://\w') simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|net|org)$') simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|edu|gov|int|mil|net|org|[a-z]{2})$') simple_email_re = re.compile(r'^\S+@\S+\.\S+$') link_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\s>]+') html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE) Loading Loading @@ -127,10 +127,11 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): """ Converts any URLs in text into clickable links. Works on http://, https://, www. links and links ending in .org, .net or .com. Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens) and it'll still do the right thing. Works on http://, https://, www. links, and also on links ending in one of the original seven gTLDs (.com, .edu, .gov, .int, .mil, .net, and .org) or a two-letter ccTLD. Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens) and it'll still do the right thing. If trim_url_limit is not None, the URLs in link text longer than this limit will truncated to trim_url_limit-3 characters and appended with an elipsis. Loading
docs/ref/templates/builtins.txt +13 −6 Original line number Diff line number Diff line Loading @@ -2226,13 +2226,20 @@ urlize Converts URLs in text into clickable links. Works on links prefixed with ``http://``, ``https://``, or ``www.``. For example, ``http://goo.gl/aia1t`` will get converted but ``goo.gl/aia1t`` won't. This template tag works on several kinds of links: Also works on domain-only links ending in one of the common ``.com``, ``.net``, or ``.org`` top level domains. For example, ``djangoproject.com`` will still get converted. - links prefixed with ``http://``, ``https://``, or ``www.``. For example, ``http://goo.gl/aia1t`` will get converted but ``goo.gl/aia1t`` won't. - domain-only links ending in one of the original top level domains (``.com``, ``.edu``, ``.gov``, ``.int``, ``.mil``, ``.net``, and ``.org``). For example, ``djangoproject.com`` also gets converted. - domain-only links ending in a dot followed by two letters. This covers most country codes. For example, ``djangocon.eu`` still gets converted. .. versionchanged:: 1.4 Until Django 1.4, only the ``.com``, ``.net`` and ``.org`` suffixes were supported for domain-only links. Links can have trailing punctuation (periods, commas, close-parens) and leading punctuation (opening parens) and ``urlize`` will still do the right thing. Loading
tests/regressiontests/defaultfilters/tests.py +6 −0 Original line number Diff line number Diff line Loading @@ -276,6 +276,12 @@ class DefaultFiltersTests(TestCase): self.assertEqual(urlize('http://@foo.com'), u'http://@foo.com') # Check urlize accepts more TLDs - see #16656 self.assertEqual(urlize('usa.gov'), u'<a href="http://usa.gov" rel="nofollow">usa.gov</a>') self.assertEqual(urlize('europa.eu'), u'<a href="http://europa.eu" rel="nofollow">europa.eu</a>') def test_wordcount(self): self.assertEqual(wordcount(''), 0) self.assertEqual(wordcount(u'oneword'), 1) Loading