On Mon, Aug 09, 2010 at 09:03:18AM +0800, Martin Aspeli wrote: > On 8 August 2010 20:29, Hanno Schlichting <ha...@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
Description: Digital signature
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org https://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - https://mail.zope.org/mailman/listinfo/zope-announce https://mail.zope.org/mailman/listinfo/zope )