Opened 11 years ago

Closed 11 years ago

#7542 closed (fixed)

urlize changing link text as well as url

Reported by: devin Owned by: devin
Component: Template system Version: master
Severity: Keywords:
Cc: devin@… Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


The autoescaping introduced in [7079] had the unintended side-effect of appending http:// to both the link target and text instead of just the target.


>>> urlize('')
u'<a href=""></a>'

Instead of the pre-[7079] behavior of:

>>> urlize('')
u'<a href=""></a>'

Tests weren't written until [7701], so this wasn't caught. But it popped up on our internal tests here at Disqus.

Since urlize is intended just to convert text to clickable links, not change what the text says, this is undesirable. This is mostly used for user generated content, and I feel it's wrong to be changing what the user typed.

I've attached a patch that fixes that problem. We need to keep a url target and a link text separate. Besides, I've cleaned up the function a bit as it got largely unreadable after [7079] and updated the docstring to include mention of autoescape and the fact that this function now converts urls ending in .org, .net and .com. As well as updating the tests included in [7701] to match this expected functionality.

Attachments (1)

simple_urlize_diff.diff (5.1 KB) - added by devin 11 years ago.
fixes urlize

Download all attachments as: .zip

Change History (3)

Changed 11 years ago by devin

Attachment: simple_urlize_diff.diff added

fixes urlize

comment:1 Changed 11 years ago by Alex Gaynor

Line 94 uses the ternary syntax(a if condition else b), which is a Python 2.5ism, Django maintains compatibility with versions from 2.3 to 2.5 so this should be changed, I haven't had a chance to look at anything else in this patch, that just stuck out at me.

comment:2 Changed 11 years ago by Adrian Holovaty

Resolution: fixed
Status: newclosed

(In [7755]) Fixed #7542 -- Fixed bug in urlize where it was appending 'http://' to the link text. Thanks for the patch and tests, devin

Note: See TracTickets for help on using tickets.
Back to Top