[PEAK] EntityDM._thunk method
Phillip J. Eby
pje at telecommunity.com
Wed Jul 20 20:46:15 EDT 2005
At 12:08 AM 7/21/2005 +0000, Tiago Cogumbreiro wrote:
>In a testcase I am creating two objects one depends on the other, in
>the same transaction I am removing the first, then the '_thunk' method
>is called and a NotImplementedError is raised.
>What is this method for?
_thunk() is for implementing cross-database imports or references. It's
called when a DM needs to know what OID an object should be saved under,
but the object doesn't belong to that DM.
>Is this testcase a wrong one?
When you delete an object from a DM, it no longer "belongs" to that
DM. Probably the object you're not deleting is trying to save a reference
to the deleted object, but since the object is deleted, _thunk() gets
called to effectively resurrect it.
It may be that the oidFor() method should be extended to handle the case
where an object does not belong to any DM, and "adopt" it for that DM
(effectively resurrecting it if it was deleted). However, it's probably
also the case that your test is doing something you don't really intend it
to. For example, it may be that you need to delete the reference to the
deleted object from the non-deleted object being saved, rather than just
deleting the object itself.
More information about the PEAK