diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2012-01-08 09:51:36 +0000 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2012-01-08 09:51:36 +0000 |
| commit | aa4e1522968b19499801fe3d73d6b2f3bf3b3acd (patch) | |
| tree | 519098cb67f2cc84fb6169d837b6682e8f215d1b | |
| parent | d101ed2cb8d5a25e0120764fe5ed86c101a2113a (diff) | |
Fixed #12183 -- Made the urlize filter insert the nofollow attribute properly when an http: URL occurs after a mailto: URL. Thanks eronen for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17356 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/utils/html.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/defaultfilters/tests.py | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/django/utils/html.py b/django/utils/html.py index ce886efba7..a0ad5f3d00 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -141,7 +141,6 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): trim_url = lambda x, limit=trim_url_limit: limit is not None and (len(x) > limit and ('%s...' % x[:max(0, limit - 3)])) or x safe_input = isinstance(text, SafeData) words = word_split_re.split(force_unicode(text)) - nofollow_attr = nofollow and ' rel="nofollow"' or '' for i, word in enumerate(words): match = None if '.' in word or '@' in word or ':' in word: @@ -150,6 +149,7 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): lead, middle, trail = match.groups() # Make URL we want to point to. url = None + nofollow_attr = ' rel="nofollow"' if nofollow else '' if middle.startswith('http://') or middle.startswith('https://'): url = smart_urlquote(middle) elif middle.startswith('www.') or ('@' not in middle and \ diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py index 515840d87e..2c7cdb17a6 100644 --- a/tests/regressiontests/defaultfilters/tests.py +++ b/tests/regressiontests/defaultfilters/tests.py @@ -253,6 +253,11 @@ class DefaultFiltersTests(TestCase): u'<a href="http://en.wikipedia.org/wiki/Caf%C3%A9" rel="nofollow">' u'http://en.wikipedia.org/wiki/Café</a>') + # Check urlize adds nofollow properly - see #12183 + self.assertEqual(urlize('foo@bar.com or www.bar.com'), + u'<a href="mailto:foo@bar.com">foo@bar.com</a> or ' + u'<a href="http://www.bar.com" rel="nofollow">www.bar.com</a>') + # Check urlize handles IDN correctly - see #13704 self.assertEqual(urlize('http://c✶.ws'), u'<a href="http://xn--c-lgq.ws" rel="nofollow">http://c✶.ws</a>') |
