[Product-Developers] Re: five.intid and DirectoryView

Martijn Pieters mj at zopatista.com
Fri Jun 27 21:12:57 UTC 2008


On Fri, Jun 27, 2008 at 6:53 PM, Ross Patterson <me at rpatterson.net> wrote:
> "Martijn Pieters" <mj at zopatista.com> writes:
>> But the code never does that. When cloning a file-based FSObject, a
>> new instance is created and that is added to the ZODB. Noone else
>> should do this either.
>
> zope.app.keyreference does.  The persistence machinery doesn't add an
> object to a connection until commit.  As such, an IPersistent and
> IObjectAdded event handler, such as the one in zope.app.intid, that
> needs the object to have a connection needs to add the object to a
> connection.

Why is the IObjectAdded event fired at all? Perhaps that's the bug here.

> Shouldn't anything that implements IPersistent be able to be added to a
> connection?  Wouldn't that be considered part of providing the
> interface?  Where else is an object that provides IPersistent stored in
> global state?

I assume it was easier at the time to use just one class. Perhaps this
should be reconsidered now. However, just providing the IPersistence
interface does not mean the object expects to be added to a connection
arbitrarily.

-- 
Martijn Pieters




More information about the Product-Developers mailing list