[Zope3-Users] Re: OrderedContainer.keys() does not return newely
added key in ObjectAddedEvent
Marius Gedminas
mgedmin at b4net.lt
Tue Feb 20 16:04:46 EST 2007
On Tue, Feb 20, 2007 at 07:53:14PM +0100, Philipp von Weitershausen wrote:
> Alek Kowalczyk wrote:
> >I have subscribed to the ObjectAddedEvent for my OrderedContainer.
> >There is the a strange behavior in the event handler:
> >- myObj is my contained object
> >- myObj.__parent__ is my OrderedContainer.
> >
> >1. this returns True when called in the event handler:
> >myObj.__name__ in myObj.__parent__
> >2. this returns False when called in the event handler:
> >myObj.__name__ in myObj.__parent__.keys()
> >
> >Code inspection of OrderedContainer.__setitem__ shows the following:
> >1. first call setitem, which triggers event as side effect
> >setitem(self, self._data.__setitem__, key, object)
> >
> >2. after that add key to the _order, which is returned by keys() method:
> >if not existed:
> > self._order.append(key)
> >
> >Is it bug or just works-as-designed?
> >I think that this behavior is improper or at least confusing a bit.
> >Event should be called *after*
> >the keys() method is able to return list with added object, so that:
> >(myObj.__name__ in myObj.__parent__) ==
> >(myObj.__name__ in myObj.__parent__.keys())
>
> Yes. I think
>
> if not existed:
> self._order.append(key)
>
> should be executed before
>
> setitem(self, self._data.__setitem__, key, object)
setitem() may raise various exceptions (e.g. DuplicationError). It
would be good to not have extra names left in _order in that case.
> Perhaps you can round up a patch, including a test that tests this from
> an event handler perspective? You can submit the patch and the original
> bug report to the Zope 3 bug collector
> (http://www.zope.org/Collectors/Zope3-dev).
Marius Gedminas
--
<Corsac> yeah, i'm reading the answers, currently
<Corsac> but what I see is that there is no real procedure to rebuild initfs
<Corsac> the common way seems to use a loop device with a jffs2 filesystem, put
original files there, and add other files, then umount, flash and pray
<dwd> Corsac: You forgot "ritual sacrifice of a medium sized rodent".
Without that, it'll never work.
<zuh> And if it doesn't work the first time, re-adjust towel ordering in the
restroom and try again
-- #maemo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope3-users/attachments/20070220/eb40daed/attachment.bin
More information about the Zope3-users
mailing list