[ZODB-Dev] historicalRevision for subobjects
Christian Heimes
christian at cheimes.de
Fri Apr 29 09:41:11 EDT 2005
Hey :)
I need some guidance from ZODB gurus.
Christian Theune and me have implemented a diffed history feature for
Archetypes based content types. It's part of ATContentTypes and is meant
to help reviewers to see the differences between different revisions of
an object. The code is using the method OFS.History.historicalRevision +
db().oldstate() to iterate over the ZODB revisions of the object.
The code was working very well because we were using AttributeStorage.
AS stores the data of Archetype fields as a simple attribute on the
object. For security and performance reasons I have implemented
annotation storage that is using Zope3 style attribute annotations to
store the data in an OOBTree attached to the object. With
AnnotationStorage the history isn't working any more because
historicalRevision() returns only an older version of the object but
*not* older versions of its subobjects like the btree. Even trying to
get the different revisions of the oobtree didn't help. The symptoms
were the same. I assume I have to get the revisions of the btree bucket
or choose a different path.
I had the idea of getting a snapshot of the entire ZODB for a given
transaction serial number but I don't know how to get it. Is this possible?
The code for the feature including some tries is in:
http://svn.plone.org/collective/ATContentTypes/branches/tiran-ann-history-fix/lib/historyaware.py
Christian (Tiran)
More information about the ZODB-Dev
mailing list