[Zope-CMF] Re: Decode for Record objects

Charlie Clark charlie at begeistert.org
Thu Jan 10 07:29:46 EST 2008


Am 10.01.2008 um 13:13 schrieb Hanno Schlichting:

> ZPT uses Unicode internally in Zope 2.10 and newer, so you need to  
> decode your non-unicode values before passing them into a Page  
> Template.

... using something like CMFDefault.utils.decode() assuming it knows  
how to handle the particular object it is receiving.

My current bugbear is that <tal:content="string:${result/firstname}  
{result/lastname}"> behaves differently to <tal:content="python: %s % 
(result['firstname'], result['lastname'])">

I think this is a ZPT bug but haven't been able to delve deep enough  
to confirm this and provide a test and posible fix. It looks like I  
might have some time next week.

> Plone hacks the TAL engine in horrible ways so you can still use  
> utf-8 encoded strings as well, but I wouldn't recommend this  
> approach for a small application.

While I'm currently working on a Plone site most of my work is Zope +  
CMF

>> However, I think the error is raised because utils.decode simply  
>> returns any values untouched it doesn't know what to do with which  
>> is why I think it might be worth extending. OTOH it might  
>> something that is better fixed in the Shared.RDBMS.Results module
>
> The database connection layer is the I/O boundary in this case and  
> the decoding to Unicode should happen here. Pretty much all code in  
> Zope2's SQL or database layers doesn't do this and I haven't seen  
> much interest from anyone to fix this.

No, there isn't much interest in fixing anything on the Shared.RDBMS  
side which is a pity because Zope is really good for RDBMS  
integration. Personally I'm very interested in improving this side of  
things like using positional parameters. Is  
Shared.RDBMS.Results.Results a good place to start so that the  
various DAs don't need to worry about it.

> I'd highly recommend using one of the approaches based on  
> sqlalchemy, as otherwise you'll probably end up fixing a number of  
> bugs and adding missing features to the various products  
> responsible for Zope2's current DB interconnection features.


As I said, the mxODBC Zope DA actually has the methods to do this  
but, because of missing security declarations, you currently can't  
call them from restricted code but this is going to change in the  
next release.

Charlie
--
Charlie Clark
Helmholtzstr. 20
Düsseldorf
D- 40215
Tel: +49-211-938-5360
GSM: +49-178-782-6226





More information about the Zope-CMF mailing list