Issue 2830: Copy cgi.escape() to html (original) (raw)

Created on 2008-05-12 03:41 by brett.cannon, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
issue2830.diff pablomouzo,2010-08-29 22:31 review
Messages (15)
msg66704 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2008-05-12 03:41
cgi.escape() really belong in the new 'html' package.
msg109268 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-07-04 22:02
I'm guessing that this has simply slipped under the radar.
msg109273 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2010-07-04 22:49
Yep since it is not a critical change. If someone came up with a patch to move the code and docs over, make cgi.escape use the moved code, and add a PendingDeprecationWarning then it would get done.
msg112186 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-07-31 19:35
In light of #9061, it should also start quoting single quotes when the arg is true. Since this function is called a LOT, it might also make sense to trivially implement it in C. If there are no objections, I can do that for 3.2.
msg114724 - (view) Author: Pablo Mouzo (pablomouzo) Date: 2010-08-23 01:56
I'm attaching a patch against py3k trunk that moves the function to the html module and fixes the documentation as Brett asked for. It also changes all the occurrences of cgi.escape I found for html.escape .
msg114733 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-08-23 10:08
Looks good already. Two points: * if we do the move, we should finally make sure all problematic characters are escaped. For now, I think the single quote is the most important one in attribute mode. * the new docs for cgi.escape() are missing a newline between signature and body.
msg114763 - (view) Author: Pablo Mouzo (pablomouzo) Date: 2010-08-24 00:25
Thanks Georg for the review, I'm attaching a new patch with those problems fixed. The new patch escapes ' when the quote parameter is true, and / always.
msg114779 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-08-24 12:08
The actual implementation seems to be missing in the new patch; also the docs are not updated. Is it necessary to escape the slash?
msg114862 - (view) Author: Pablo Mouzo (pablomouzo) Date: 2010-08-25 01:00
Sorry about that, I have no idea how I managed to generate that diff. I'm attaching the correct patch. About the slash, there's a link in #9061 that recommends to escape the slash too because it's used to close tags in HTML. Is there any chance that escaping it could cause problems?
msg114864 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-08-25 01:03
The link says “forward slash is included as it helps end an HTML entity”, which I don’t understand.
msg114871 - (view) Author: Fred Drake (fdrake) (Python committer) Date: 2010-08-25 01:45
Encoding the forward slash should not cause problems, but the quote “forward slash is included as it helps end an HTML entity” is confused; there's no need or additional value in escaping the forward slash.
msg115153 - (view) Author: Pablo Mouzo (pablomouzo) Date: 2010-08-28 13:43
I'm attaching a new patch without escaping the slash.
msg115156 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-08-28 15:15
The docs are still not updated for the quote. I wonder if we shouldn't make the second argument True by default, while we're at it (or ignore it altogether and always escape everything) -- it would make the escape() much safer to use. Also quoting "'" already introduces incompatibility if someone compares the result literally, so I would not worry about additional incompatibilities so much.
msg115197 - (view) Author: Pablo Mouzo (pablomouzo) Date: 2010-08-29 22:31
I'm attaching a new patch with the documentation updated. I agree with Georg that it'd be better to escape everything by default. Are there any good reasons not to?
msg118786 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2010-10-15 15:58
Refined and applied the patch in r85531. Thanks all!
History
Date User Action Args
2022-04-11 14:56:34 admin set github: 47079
2010-10-15 15:58:00 georg.brandl set status: open -> closedresolution: fixedmessages: +
2010-08-29 22:41:36 pablomouzo set files: - issue2830.diff
2010-08-29 22:31:42 pablomouzo set files: + issue2830.diffmessages: +
2010-08-28 15:15:58 georg.brandl set messages: +
2010-08-28 13:43:10 pablomouzo set files: + issue2830.diffmessages: +
2010-08-28 13:42:12 pablomouzo set files: - issue2830.diff
2010-08-25 01:45:45 fdrake set nosy: + fdrakemessages: +
2010-08-25 01:03:18 eric.araujo set nosy: + eric.araujomessages: +
2010-08-25 01:00:54 pablomouzo set files: + issue2830.diffmessages: +
2010-08-25 00:46:12 pablomouzo set files: - issue2830.diff
2010-08-24 12:08:44 georg.brandl set messages: +
2010-08-24 01:31:39 benjamin.peterson link issue9061 superseder
2010-08-24 00:26:03 pablomouzo set files: - issue2830.diff
2010-08-24 00:25:45 pablomouzo set files: + issue2830.diffmessages: +
2010-08-23 10:08:18 georg.brandl set messages: +
2010-08-23 01:56:53 pablomouzo set files: + issue2830.diffnosy: + pablomouzomessages: + keywords: + patch
2010-07-31 19:35:08 georg.brandl set priority: low -> highnosy: + georg.brandlmessages: +
2010-07-04 22:49:46 brett.cannon set versions: + Python 3.2, - Python 2.6, Python 3.0
2010-07-04 22:49:32 brett.cannon set priority: normal -> lowkeywords: + easymessages: +
2010-07-04 22:02:19 BreamoreBoy set nosy: + BreamoreBoymessages: +
2008-05-12 03:41:32 brett.cannon create