Toby Dickenson <mbel44@dial.pipex.net> wrote:
On Tue, 14 Nov 2000 15:39:59 -0500, Shane Hathaway <shane@digicool.com> wrote:
2. The ability to rename properties after instances of the classes have been created (and have the data in those fields preserved)
This is also more difficult than it sounds. You'd have to either scan through the entire ZODB and modify class instances or associate properties with a magical, unchanging ID. The latter solution is dead wrong, but the first is actually kind of interesting. If there were a separate index for each object type in the ZODB, it would be possible. In fact, when ZODB is running from a relational database, there is indeed a way to do that. Hmmm...
Or if your ZClass has a python base class, then a __setstate__ method could be added to do the same thing incrementally. Like all changes to a Python base class, this requires restarting the server.
Correct in theory, but broken in practice: if you make your ZClass persistent (i.e., you leave checked the "Include standard Zope persistent object base classes?" checkbox on the "Add ZClass form), then Persistent will be the first base class in the list, and *your* '__setstate__' will never be called! Unchecking the box doesn't help, as you then have a ZClass which doesn't (probably) get pickled into the ZODB, so it never needs '__setstate__' atall. Catch-22'ly, Tres. -- =============================================================== Tres Seaver tseaver@digicool.com Digital Creations "Zope Dealers" http://www.zope.org