[Checkins] SVN: zope.app.intid/trunk/ Make IntId events subclass IObjectEvent
Dan Korostelev
nadako at gmail.com
Thu Dec 11 07:05:12 EST 2008
Log message for revision 93900:
Make IntId events subclass IObjectEvent
Changed:
U zope.app.intid/trunk/CHANGES.txt
U zope.app.intid/trunk/src/zope/app/intid/interfaces.py
U zope.app.intid/trunk/src/zope/app/intid/tests.py
-=-
Modified: zope.app.intid/trunk/CHANGES.txt
===================================================================
--- zope.app.intid/trunk/CHANGES.txt 2008-12-11 10:53:55 UTC (rev 93899)
+++ zope.app.intid/trunk/CHANGES.txt 2008-12-11 12:05:12 UTC (rev 93900)
@@ -2,6 +2,12 @@
CHANGES
=======
+3.5.1 (unreleased)
+
+- Make IIntIdAddedEvent and IIntIdRemovedEvent subclass
+ zope.component.interfaces.IObjectEvent to make subscribers
+ for like (ISomeObject, IIntIdAddedEvent) work.
+
3.5.0 (2008-06-19)
------------------
Modified: zope.app.intid/trunk/src/zope/app/intid/interfaces.py
===================================================================
--- zope.app.intid/trunk/src/zope/app/intid/interfaces.py 2008-12-11 10:53:55 UTC (rev 93899)
+++ zope.app.intid/trunk/src/zope/app/intid/interfaces.py 2008-12-11 12:05:12 UTC (rev 93900)
@@ -4,6 +4,7 @@
$Id$
"""
from zope.interface import Interface, Attribute, implements
+from zope.component.interfaces import IObjectEvent
class IIntIdsQuery(Interface):
@@ -64,15 +65,13 @@
"""
-class IIntIdRemovedEvent(Interface):
+class IIntIdRemovedEvent(IObjectEvent):
"""A unique id will be removed
The event is published before the unique id is removed
from the utility so that the indexing objects can unindex the object.
"""
- object = Attribute("The object being removed")
-
original_event = Attribute("The IObjectRemoveEvent related to this event")
@@ -88,15 +87,13 @@
self.original_event = event
-class IIntIdAddedEvent(Interface):
+class IIntIdAddedEvent(IObjectEvent):
"""A unique id has been added
The event gets sent when an object is registered in a
unique id utility.
"""
- object = Attribute("The object being added")
-
original_event = Attribute("The ObjectAddedEvent related to this event")
Modified: zope.app.intid/trunk/src/zope/app/intid/tests.py
===================================================================
--- zope.app.intid/trunk/src/zope/app/intid/tests.py 2008-12-11 10:53:55 UTC (rev 93899)
+++ zope.app.intid/trunk/src/zope/app/intid/tests.py 2008-12-11 12:05:12 UTC (rev 93900)
@@ -208,6 +208,7 @@
from zope.app.intid import removeIntIdSubscriber
from zope.app.container.contained import ObjectRemovedEvent
from zope.app.intid.interfaces import IIntIdRemovedEvent
+ from zope.app.folder.interfaces import IFolder
parent_folder = self.root['folder1']['folder1_1']
folder = self.root['folder1']['folder1_1']['folder1_1_1']
id = self.utility.register(folder)
@@ -217,7 +218,12 @@
setSite(self.folder1_1)
events = []
+
+ def appendObjectEvent(obj, event):
+ events.append((obj, event))
+
ztapi.subscribe([IIntIdRemovedEvent], None, events.append)
+ ztapi.subscribe([IFolder, IIntIdRemovedEvent], None, appendObjectEvent)
# This should unregister the object in all utilities, not just the
# nearest one.
@@ -226,20 +232,29 @@
self.assertRaises(KeyError, self.utility.getObject, id)
self.assertRaises(KeyError, self.utility1.getObject, id1)
- self.assertEquals(len(events), 1)
- self.assertEquals(events[0].object, folder)
- self.assertEquals(events[0].original_event.object, parent_folder)
+ self.assertEquals(len(events), 2)
+ self.assertEquals(events[0][0], folder)
+ self.assertEquals(events[0][1].object, folder)
+ self.assertEquals(events[0][1].original_event.object, parent_folder)
+ self.assertEquals(events[1].object, folder)
+ self.assertEquals(events[1].original_event.object, parent_folder)
def test_addIntIdSubscriber(self):
from zope.app.intid import addIntIdSubscriber
from zope.app.container.contained import ObjectAddedEvent
from zope.app.intid.interfaces import IIntIdAddedEvent
+ from zope.app.folder.interfaces import IFolder
parent_folder = self.root['folder1']['folder1_1']
folder = self.root['folder1']['folder1_1']['folder1_1_1']
setSite(self.folder1_1)
events = []
+
+ def appendObjectEvent(obj, event):
+ events.append((obj, event))
+
ztapi.subscribe([IIntIdAddedEvent], None, events.append)
+ ztapi.subscribe([IFolder, IIntIdAddedEvent], None, appendObjectEvent)
# This should register the object in all utilities, not just the
# nearest one.
@@ -249,9 +264,12 @@
id = self.utility.getId(folder)
id1 = self.utility1.getId(folder)
- self.assertEquals(len(events), 1)
- self.assertEquals(events[0].original_event.object, parent_folder)
- self.assertEquals(events[0].object, folder)
+ self.assertEquals(len(events), 2)
+ self.assertEquals(events[0][1].original_event.object, parent_folder)
+ self.assertEquals(events[0][1].object, folder)
+ self.assertEquals(events[0][0], folder)
+ self.assertEquals(events[1].original_event.object, parent_folder)
+ self.assertEquals(events[1].object, folder)
class TestIntIds64(TestIntIds):
More information about the Checkins
mailing list