[Zope-dev] Proposal: set __parent__ and __name__ in Zope 2.12 OFS

Laurence Rowe l at lrowe.co.uk
Mon Apr 27 15:27:50 EDT 2009


Martin Aspeli wrote:
> Laurence Rowe wrote:
>> Martin Aspeli wrote:
>>> Hi,
>>>
>>> First - a quick question: can we treat __name__ and id/getId()/_setId() 
>>> as the same, always? OFS.SimpleItem has some support for letting id and 
>>> name be the same, but the link is lost once both __name__ and id are 
>>> set. Why isn't __name__ just a property that reflects self.id ?
>> I would prefer this to be the other way around -- getId() /  _setId() 
>> should operate on __name__. It will be easier to drop OFS support in the 
>> future if pickles store the real __name__ and __parent__ attributes. We 
>> will presumably require a migration now anyway to add __parent__ pointers.
> 
> It kind of already does that if 'id' isn't set. But when 'id' is set, 
> they diverge.
> 
> Also note that according to ILocation, __name__ is a TextLine, which 
> implies unicode. unicode ids are a no-no in Zope 2.

I doubt it would be all that difficult to change the publisher to handle 
unicode path segments.

> The current solution I've put into dexterity is to let __name__ be a 
> property that gets and sets id, but assumes its value is unicode. It'll 
> fail if the unicode string can't be encoded to ASCII, though.

This is what I'm worried about. If new code uses __name__ instead, then 
it opens up the possibility to share ZODB content between Plone and 
lightweight systems like repoze.bfg, as well as making it easier for 
Plone to migrate to a cleaner content model. Plone has been around for 
eight years now, I sincerely hope we are not still stuck on 
OFS.SimpleItem for another eight years!

Laurence



More information about the Zope-Dev mailing list