Re: Objects in transaction-Object do not support absolute_url() (was: Re: [Zope] Catch Object Changes)
Hallo Dieter, am Samstag, 6. Dezember 2003 um 19:41 schrieben Sie: DM> Holger Schmidt wrote at 2003-12-6 11:35 +0100:
... DM> Again:
DM> Objects registering with the transaction are the bare (not acquisition DM> wrapped) objects. They know nothing about the context in which DM> they are used -- unless someone coded such knowledge into some DM> of their attributes (the "id", a "_v_" attribute as Casey suggests, DM> a "path" attribute...).
Sorry, I did not express myself clean:
How does Zope know where in the ZODB it has to commit the object changes?
DM> Each object has an object id ("_p_oid" attribute). DM> The storage maintains a mapping "oid --> pickle" (where pickle is DM> the object state + class info). DM> Persistent references contain the "oid" (and usually class info) DM> such that the corresponding object state can be loaded on demand.
Does Zope (the transaction) know something about the "old-version" object (before the commit...)?
DM> Yes: DM> A connection has the method "oldstate". DM> It has an "object" and a "serial" (a timestamp") as arguments. DM> "obj._p_jar.oldstate(obj, obj._p_serial)" returns the DM> state as it was when the object was loaded from the storage. DM> This requires that "obj" was not newly created in this DM> transaction (then "obj._p_serial" will be "None" and "oldstate" DM> will fail).
Does it overwrite the "old-version" object, or is there a kind of versioning system ...?
DM> You should read the "ZODB3" documentation...
Is there a chance to get and use the old version of the object to get the path of the modified object...?
DM> You can get the old version but at this level there are no paths, DM> neither in the current nor in the historic versions. I just tried to compare the objects of my list to the changed object via the absolute_url()-method ... seems not to be possible easily ;) can I compare my list of objects to the changed object via the obj._p_oid-Attribute? Does this Attribute change anytime ...? Or is there any other attribute i could (and perhaps should) better use instead? -- Thanks, Holger
Holger Schmidt wrote at 2003-12-8 01:13 +0100:
... can I compare my list of objects to the changed object via the obj._p_oid-Attribute? Does this Attribute change anytime ...?
"_p_oid" is quite stable (when it is not "None"). -- Dieter
participants (2)
-
Dieter Maurer -
Holger Schmidt