Opened 16 years ago

Closed 16 years ago

#7542 closed (fixed)

urlize changing link text as well as url

Reported by: devin Owned by: devin
Component: Template system Version: dev
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

Description

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.

eg:

>>> urlize('google.com')
u'<a href="http://google.com">http://google.com</a>'

Instead of the pre-[7079] behavior of:

>>> urlize('google.com')
u'<a href="http://google.com">google.com</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 16 years ago.
fixes urlize

Download all attachments as: .zip

Change History (3)

by devin, 16 years ago

Attachment: simple_urlize_diff.diff added

fixes urlize

comment:1 by Alex Gaynor, 16 years ago

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 by Adrian Holovaty, 16 years ago

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