monkey patch html_quote (was: RE: [Zope] html_quote, quoting acce nts)
Ah, I was almost there, I traced it to DocumentTemplate, but didn't notice the seperate html_quote.py file ... OK, now that all this makes sense ... I'm trying to overload/monkey patch the html_quote with some of my own code that quotes ALL html entities, not just the cgi.escape() ones (& < >) ... BUT, it's not working. I noticed the the way DT_Var implements this in ways I'm not too sure I understand (coding beyond my current level of knowledge). Something to do with modifiers, lambda, and mappings. I'm guessing that the monkey patching isn't working because it's "too late" in the process, and the function has been "copied" or something like that? Anyways, could anyone point me in the right direction on how to do this? I've monkey patched other things before successfully, but this one isn't cooperating :( Any help would be greatly appreciated! P.S. : Code is below, not optimized, just for testing. Thanks, J.F. The code in my product's __init__.py # Monkey patch that makes the html_quote actually quote ALL entities, not just "&" "<" and ">", but NOT the octal coded ones, which would allready be encoded. def my_html_quote(string, name='(Unknown name)', md={}): string = ustr(string) myentities = {} for (key, value) in entitydefs.items(): if ( len(value) == 1 ): myentities[value] = key del myentities['&'] # First do the ampersands if ( find(string,'&') > 0 ): string = replace(string,'&','&') # Then everything else for char in myentities.keys(): if ( char in string ): string = replace(string,char,'&'+myentities[char]+';') return string html_quote.html_quote = my_html_quote -----Original Message----- From: Troy Farrell [mailto:troy@entheossoft.com] Sent: Monday, May 05, 2003 12:09 PM To: Jean-Francois.Doyon@CCRS.NRCan.gc.ca; zope Subject: Re: [Zope] html_quote, quoting accents Ok. We're going to trace this to the root. The html_quote you are using is in Products.PythonScripts.standard.html_quote() or so, which points to DocumentTemplate.DT_Var.html_quote() which points to DocumentTemplate.html_quote.html_quote() which points to cgi.escape(). The cgi.escape() docs say this: escape(s[, quote]) Convert the characters "&", "<" and ">" in string s to HTML-safe sequences. Use this if you need to display text that might contain such characters in HTML. If the optional flag quote is true, the double-quote character (""") is also translated; this helps for inclusion in an HTML attribute value, as in <A HREF="...">. If the value to be quoted might include single- or double-quote characters, or both, consider using the quoteattr() function in the xml.sax.saxutils module instead. http://www.python.org/doc/current/lib/node300.html All that being said, html_quote will not solve your problem. One thing you might try is messing with the character coding used on your html pages. The only other option I can see is writing your own convertor. Troy Jean-Francois.Doyon@CCRS.NRCan.gc.ca wrote:
Troy,
OK, well for the purpose of this example, and where I'm starting, is with CMF Metadata, such as the title.
A user enters the metadata using their regular keyboards and so on, which means the accented characters are typed in in ISO-8859-1, and stored as such I guess? (since technically this value isn't HTML, it should be stored in it's native character set)
Now when I output the Title, it comes out in ISO-8859-1 properly, but I'd like to force it encoded as an HTML entity, so when a user enters the word "région" in the Title, it'll be entered/saved that way, and by default be output that way, but ...
My understanding was that uting html_quote would transform that into "région" ... But it's not doing anything different for me. Same with entity notation, &dtml-Title; doesn't do the html_quoting either.
This is using the default metadata templates, or close enough that changes I have made shouldn't matter (I've extended the metadata, but not modified the existing DC setup).
Am I misunderstanding the purpose of this command? Or is there something else I'm not getting?
Thanks, J.F.
-----Original Message----- From: Troy Farrell [mailto:troy@entheossoft.com] Sent: Friday, May 02, 2003 5:15 PM To: Jean-Francois.Doyon@CCRS.NRCan.gc.ca Subject: Re: [Zope] html_quote, quoting accents
Bonjour Jean-François.
We need more information before we can help you. Where is your user typing these characters? In what forms? In what type of objects are you storing this information? We'll try to help you, but we need more information first.
Troy
Jean-Francois.Doyon@CCRS.NRCan.gc.ca wrote:
Hello,
I have french content on my site, which means accents and other high-bit type characters.
For the first time a user actually ran into the problem of the characters coming out wrong on his screen, so now I have to fix it :P
I tried using html_quote without success, and also using the &dtml-Title; type syntax (Which apparently is auto-quoted) but in both cases my accents are still coming out in raw latin-1 instead of something like é ...
Of course in the case of the metadata, I don't want to html encode the characters since technically it's not HTML just yet :)
Help ?
Thanks,
Jean-François Doyon Internet Service Development and Systems Support / Soutien de systèmes et developement de services Internet GeoAccess Division / Division GéoAccès Canada Center for Remote Sensing / Centre canadien de télédétection Natural Resources Canada / Ressources naturelles Canada Phone / Téléphone: (613) 992-4902 Fax / Télécopieur: (613) 947-2410 http://atlas.gc.ca
_______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
_______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
participants (1)
-
Jean-Francois.Doyon@CCRS.NRCan.gc.ca