[KSS-checkins] r35831 - kukit/kss.core/trunk
jvloothuis at codespeak.net
jvloothuis at codespeak.net
Sat Dec 16 11:51:27 CET 2006
Author: jvloothuis
Date: Sat Dec 16 11:51:24 2006
New Revision: 35831
Modified:
kukit/kss.core/trunk/azaxview.py
kukit/kss.core/trunk/azaxview.txt
kukit/kss.core/trunk/siteview.txt
Log:
Added a stopEventListening method to the site view. This makes it possible to deregister the view for event interception. The change will be used in unit tests but also may have some merrit in specific places.
Modified: kukit/kss.core/trunk/azaxview.py
==============================================================================
--- kukit/kss.core/trunk/azaxview.py (original)
+++ kukit/kss.core/trunk/azaxview.py Sat Dec 16 11:51:24 2006
@@ -94,9 +94,13 @@
azaxevent = AzaxEvent(self, event)
notify(azaxevent)
- def render(self):
+ def stopEventListening(self):
# reset the site manager to its original one
- getSiteManager.reset()
+ if self.getSiteManager() is component.getSiteManager():
+ getSiteManager.reset()
+
+ def render(self):
+ self.stopEventListening()
class AzaxBaseView(SiteView):
""" Base kss view
Modified: kukit/kss.core/trunk/azaxview.txt
==============================================================================
--- kukit/kss.core/trunk/azaxview.txt (original)
+++ kukit/kss.core/trunk/azaxview.txt Sat Dec 16 11:51:24 2006
@@ -25,7 +25,6 @@
>>> from zope.app.component.interfaces import ISite
>>> from zope.interface import directlyProvides, directlyProvidedBy
>>> from zope.publisher.browser import TestRequest
- >>> import zope.component.event
>>> from zope.app.folder import folder
>>> myfolder = folder.rootFolder()
Modified: kukit/kss.core/trunk/siteview.txt
==============================================================================
--- kukit/kss.core/trunk/siteview.txt (original)
+++ kukit/kss.core/trunk/siteview.txt Sat Dec 16 11:51:24 2006
@@ -2,9 +2,9 @@
Site view
=========
-All Azax views are not only a browser view but a site as well. A site is Zope
-used as a local component registry. You can hookup adapters etc. in such a
-place. Azax views are made sites to intercept all incomming events.
+All Azax views are not only a browser view but provide a site manager as well.
+The site manager is hooked into the component framework on creation time. This
+allows the Azax views to intercept all incomming events.
By doing so the view is able to hookup it's own event redispatcher. This is a
normal event handler which generates the specific Azax events. These events
@@ -15,7 +15,7 @@
instance when you change a title in a document you also want the menu reloaded.
By using events for this we can achieve a degree of decoupling.
-The main class which implements views as a site is `SiteView`.
+The main class which implements views with a site manager is `SiteView`.
>>> from kss.core.azaxview import SiteView
@@ -69,3 +69,23 @@
>>> view.render()
>>> view.getSiteManager() is component.getSiteManager()
False
+
+The view also has a specific way of unregistering itself for events. You can
+use this from your tests or other specific use cases. First we will create a
+new view to start listening.
+
+ >>> view = SiteView(None, None)
+
+Now we will stop the view from listening to the events.
+
+ >>> view.stopEventListening()
+
+If we raise an event we should only get the one event and not the AzaxEvent as well.
+
+ >>> clearEvents()
+ >>> notify(ObjectModifiedEvent(None))
+ >>> len(getEvents())
+ 1
+ >>> original_event = getEvents()[0]
+ >>> IObjectModifiedEvent.providedBy(original_event)
+ True
More information about the Kukit-checkins
mailing list