[Zope-CVS] CVS: Products/Event - EventService.py:1.2 IEventService.py:1.2

Chris McDonough chrism@zope.com
Sun, 30 Jun 2002 02:35:05 -0400


Update of /cvs-repository/Products/Event
In directory cvs.zope.org:/tmp/cvs-serv22481

Modified Files:
	EventService.py IEventService.py 
Log Message:
When "notify" was called on a subscriber, the subscriber had no
context.  Now, the context is the event service (by default), or
a context specified via the context argument to publishEvent.


=== Products/Event/EventService.py 1.1.1.1 => 1.2 ===
 
     security.declareProtected(PUBLISH_EVENTS_PERM, 'publishEvent')
-    def publishEvent(self, event):
+    def publishEvent(self, event, context=None):
+        # we need a context for the subscriber.  If one
+        # is not passed in, we nominate ourselves as the context.
+        if context is None:
+            context = self 
         subscriptions_collection = self._registry.getAllForObject(event)
 
         for subscriptions in subscriptions_collection:
@@ -63,6 +67,7 @@
                 if filter is not None:
                     if not filter(event):
                         continue
+                subscriber = subscriber.__of__(context)
                 subscriber.notify(event)
 
     security.declareProtected(MGMT_SCREEN_PERM, 'listAllSubscriptions')


=== Products/Event/IEventService.py 1.1.1.1 => 1.2 ===
     """
     
-    def publishEvent(event):
+    def publishEvent(event, context=None):
         """
         Notify all subscribers of the channel of event.
 
         Events will often be propagated to higher level IEventServices;
         This is a policy decision for the IEventService.
+
+        If context is passed in, it is used for a subscriber's
+        context when the subscriber is notified.  If context
+        is not passed in, the subscriber's context will be
+        the event service object itself during notification.
         """