Assuming you're not changing attribute values, but *just* the class, I've
had success with doing an XML export, a find/replace of the class name, and
a re-import.

The XML is fairly readable, you can just look for example for
"Products.MyProduct.OldClass" and replace it with
"Products.MyProduct.NewClass".

J.F.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
Miles Waller
Sent: June 12, 2006 11:58 AM
To: zope@zope.org
Subject: [Zope] Changing class of objects in the ZODB

Hi,

Does anyone have a good approach to changing the class of an object already
stored in the ZODB?

A site is using classes defined and customised in a product on the
filesystem, and I want to split the product into two to separate the
unmodified vanilla product, and customisations.  I found a script from shane
when I googled which purported to do this, but I did not understand exactly
what it did and so am a bit nervous of using it.  
Also, it appeared to do it all in one transaction, which would not be
practical for this site (too many objects).

I had originally been envisaging doing something in __getstate__ for these
objects, so when they were retrieved, they were updated and marked as having
been changed so they would be committed at the end of the transaction.  But
I don't really know exactly what!

I don't think it will work to use module_aliases because there will still be
a class that can be imported from the original location.

Any help much appreciated,

Miles


_______________________________________________
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 )

Reply via email to