[Zope-dev] Changing and migrating persistence structure

Marius Gedminas marius at gedmin.as
Mon Aug 9 07:05:39 EDT 2010


On Mon, Aug 09, 2010 at 09:03:18AM +0800, Martin Aspeli wrote:
> On 8 August 2010 20:29, Hanno Schlichting <hanno at hannosch.eu> wrote:
> 
> > There should be some way of doing this with custom __getstate__ and
> > __setstate__ methods.
> >
> > It's just tricky to get right and a bit fragile. It's much easier to
> > write the migration code if both the old and new class are separate
> > and functioning at the same time.
> 
> The main problem is that the advertised API says you should do:
> 
> from plone.registry import Record
> from plone.registry import field
> 
> registry['foo.bar'] = Record(field.TextLine(), u"my value")
> 
> Here, field.TextLine derives from PersistentField which derives from
> Persistent, and Record derives from Persistent also.
> 
> If I wanted to get rid of the Persistent base, I'd have to make a new
> "tree" of field types (the standard zope.schema ones still need some
> subclassing), and a new Record class with a less obvious name.

You could create the new non-persistent classes with less obvious names
in registry.__setitem__ if you get old-style Persistent values passed in.

Marius Gedminas
-- 
http://pov.lt/ -- Zope 3/BlueBream consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20100809/5ce530ed/attachment.bin 


More information about the Zope-Dev mailing list