[KSS-checkins] r49380 - kukit/kss.demo/branch/1.2/kss/demo
reebalazs at codespeak.net
reebalazs at codespeak.net
Wed Dec 5 14:00:16 CET 2007
Author: reebalazs
Date: Wed Dec 5 14:00:16 2007
New Revision: 49380
Modified:
kukit/kss.demo/branch/1.2/kss/demo/events.py
kukit/kss.demo/branch/1.2/kss/demo/interfaces.py
kukit/kss.demo/branch/1.2/kss/demo/registry.py
Log:
Port back critical bugfix -r47443 from trunk: demo plugins are not loaded (empty screen) depending on zcml loading order.
Modified: kukit/kss.demo/branch/1.2/kss/demo/events.py
==============================================================================
--- kukit/kss.demo/branch/1.2/kss/demo/events.py (original)
+++ kukit/kss.demo/branch/1.2/kss/demo/events.py Wed Dec 5 14:00:16 2007
@@ -8,13 +8,19 @@
IKSSDemoResource,
IKSSSeleniumTestResource,
IKSSDemoRegistrationEvent,
+ IKSSDemoRegistryEvent,
+ IKSSDemoRegistry
)
from zope.interface import implements
class KSSDemoRegistrationEvent(object):
- """Redispatch of registration for demo utilities"""
+ """Redispatch of registration for demo resource utilities"""
implements(IKSSDemoRegistrationEvent)
+class KSSDemoRegistryEvent(object):
+ """Redispatch of registration for demo registry utilities"""
+ implements(IKSSDemoRegistryEvent)
+
@zope.component.adapter(IUtilityRegistration, IRegistrationEvent)
def dispatchRegistration(registration, event):
"""When a demo utility is registered, add it to the registry.
@@ -24,9 +30,14 @@
"""
component = registration.component
# Only dispatch registration of the interesting utilities.
- new_event = KSSDemoRegistrationEvent()
if IKSSDemoResource.providedBy(component) or \
IKSSSeleniumTestResource.providedBy(component):
+ new_event = KSSDemoRegistrationEvent()
+ handlers = zope.component.subscribers((component, registration, event, new_event), None)
+ for handler in handlers:
+ pass # getting them does the work
+ if IKSSDemoRegistry.providedBy(component):
+ new_event = KSSDemoRegistryEvent()
handlers = zope.component.subscribers((component, registration, event, new_event), None)
for handler in handlers:
pass # getting them does the work
Modified: kukit/kss.demo/branch/1.2/kss/demo/interfaces.py
==============================================================================
--- kukit/kss.demo/branch/1.2/kss/demo/interfaces.py (original)
+++ kukit/kss.demo/branch/1.2/kss/demo/interfaces.py Wed Dec 5 14:00:16 2007
@@ -140,6 +140,11 @@
# --
class IKSSDemoRegistrationEvent(Interface):
- """Redispatched evend for registration of
- IKSSPDemoRegistry utilities.
+ """Redispatched event for registration of
+ IKSSDemoRegistration utilities (resources).
+ """
+
+class IKSSDemoRegistryEvent(Interface):
+ """Redispatched event for registration of
+ IKSSDemoRegistry utilities.
"""
Modified: kukit/kss.demo/branch/1.2/kss/demo/registry.py
==============================================================================
--- kukit/kss.demo/branch/1.2/kss/demo/registry.py (original)
+++ kukit/kss.demo/branch/1.2/kss/demo/registry.py Wed Dec 5 14:00:16 2007
@@ -9,6 +9,7 @@
IKSSDemoResource,
IKSSSeleniumTestResource,
IKSSDemoRegistrationEvent,
+ IKSSDemoRegistryEvent,
)
from zope.component.interfaces import (
IUtilityRegistration,
@@ -55,10 +56,26 @@
self.demos_are_sorted = False
site.registerHandler(self.registerDemosFromPlugin)
site.registerHandler(self.unregisterDemosFromPlugin)
+ site.registerHandler(self.registerEarlierDemos)
# registry for selenium tests
self.selenium_tests = []
site.registerHandler(self.registerSeleniumTestsFromPlugin)
site.registerHandler(self.unregisterSeleniumTestsFromPlugin)
+ # ... the rest of setup will be done from registerEarlierDemos
+
+ @adapter(IKSSDemoRegistry, IUtilityRegistration, IRegistered, IKSSDemoRegistryEvent)
+ def registerEarlierDemos(self, registry, registration=None, event=None, new_event=None):
+ """Make sure that the resources registered earlier, are added
+ (so this is a listener to the registration of myself
+ which is needed because CA is not ready at time of the __init__)
+ """
+ if registry != self:
+ # The utility only register on itself.
+ return
+ site = getSiteManager()
+ for name, plugin in site.getUtilitiesFor(IKSSDemoResource):
+ for demo in plugin.demos:
+ self.registerDemo(demo)
@adapter(IKSSDemoResource, IUtilityRegistration, IRegistered, IKSSDemoRegistrationEvent)
def registerDemosFromPlugin(self, plugin, registration=None, event=None, new_event=None):
More information about the Kukit-checkins
mailing list