Opened 17 years ago
Closed 17 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)
Change History (3)
by , 17 years ago
Attachment: | simple_urlize_diff.diff added |
---|
comment:1 by , 17 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 , 17 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
fixes urlize