Author: aaugustin
Date: 2012-01-08 08:08:43 -0800 (Sun, 08 Jan 2012)
New Revision: 17359

Modified:
   django/trunk/django/utils/html.py
   django/trunk/docs/ref/templates/builtins.txt
   django/trunk/tests/regressiontests/defaultfilters/tests.py
Log:
Fixed #16656 -- Changed the urlize filter to accept more top-level domains.


Modified: django/trunk/django/utils/html.py
===================================================================
--- django/trunk/django/utils/html.py   2012-01-08 15:43:32 UTC (rev 17358)
+++ django/trunk/django/utils/html.py   2012-01-08 16:08:43 UTC (rev 17359)
@@ -24,7 +24,7 @@
     ('|'.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)
@@ -127,10 +127,11 @@
     """
     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.

Modified: django/trunk/docs/ref/templates/builtins.txt
===================================================================
--- django/trunk/docs/ref/templates/builtins.txt        2012-01-08 15:43:32 UTC 
(rev 17358)
+++ django/trunk/docs/ref/templates/builtins.txt        2012-01-08 16:08:43 UTC 
(rev 17359)
@@ -2226,14 +2226,21 @@
 
 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.
 

Modified: django/trunk/tests/regressiontests/defaultfilters/tests.py
===================================================================
--- django/trunk/tests/regressiontests/defaultfilters/tests.py  2012-01-08 
15:43:32 UTC (rev 17358)
+++ django/trunk/tests/regressiontests/defaultfilters/tests.py  2012-01-08 
16:08:43 UTC (rev 17359)
@@ -276,6 +276,12 @@
         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)

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to