[Checkins] SVN: grok/branches/philikon-grokcore.component/src/grok/ Move the addSiteHandler out of the grok() bootstrap as well, for the same reason

Philipp von Weitershausen philikon at philikon.de
Thu Aug 23 20:58:00 EDT 2007


Log message for revision 79200:
  Move the addSiteHandler out of the grok() bootstrap as well, for the same reason
  the other things were moved out: They're not essential to the grokking procedure,
  just a requirement for grok-the-web-application-framework.
  

Changed:
  U   grok/branches/philikon-grokcore.component/src/grok/_grok.py
  U   grok/branches/philikon-grokcore.component/src/grok/components.py
  U   grok/branches/philikon-grokcore.component/src/grok/configure.zcml
  U   grok/branches/philikon-grokcore.component/src/grok/tests/site/site.py

-=-
Modified: grok/branches/philikon-grokcore.component/src/grok/_grok.py
===================================================================
--- grok/branches/philikon-grokcore.component/src/grok/_grok.py	2007-08-24 00:52:25 UTC (rev 79199)
+++ grok/branches/philikon-grokcore.component/src/grok/_grok.py	2007-08-24 00:58:00 UTC (rev 79200)
@@ -16,7 +16,6 @@
 from zope import component
 from zope.component.interfaces import IDefaultViewName
 from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.app.component.site import LocalSiteManager
 
 import martian
 from martian import scan
@@ -29,24 +28,11 @@
 
 _bootstrapped = False
 def bootstrap():
-    # register a subscriber for when grok.Sites are added to make them
-    # into Zope 3 sites
-    component.provideHandler(addSiteHandler)
-
     # now grok the grokkers
     martian.grok_module(scan.module_info_from_module(meta), the_module_grokker)
     martian.grok_module(scan.module_info_from_module(grokcore.component.grokkers),
                         the_module_grokker)
 
- at component.adapter(grok.Site, grok.IObjectAddedEvent)
-def addSiteHandler(site, event):
-    sitemanager = LocalSiteManager(site)
-    # LocalSiteManager creates the 'default' folder in its __init__.
-    # It's not needed anymore in new versions of Zope 3, therefore we
-    # remove it
-    del sitemanager['default']
-    site.setSiteManager(sitemanager)
-
 # add a cleanup hook so that grok will bootstrap itself again whenever
 # the Component Architecture is torn down.
 def resetBootstrap():

Modified: grok/branches/philikon-grokcore.component/src/grok/components.py
===================================================================
--- grok/branches/philikon-grokcore.component/src/grok/components.py	2007-08-24 00:52:25 UTC (rev 79199)
+++ grok/branches/philikon-grokcore.component/src/grok/components.py	2007-08-24 00:58:00 UTC (rev 79200)
@@ -46,8 +46,8 @@
     PageTemplateResourceFactory
 from zope.app.container.btree import BTreeContainer
 from zope.app.container.contained import Contained
-from zope.app.container.interfaces import IReadContainer
-from zope.app.component.site import SiteManagerContainer
+from zope.app.container.interfaces import IReadContainer, IObjectAddedEvent
+from zope.app.component.site import SiteManagerContainer, LocalSiteManager
 
 import z3c.flashmessage.interfaces
 
@@ -70,6 +70,18 @@
     pass
 
 
+ at component.adapter(Site, IObjectAddedEvent)
+def addSiteHandler(site, event):
+    """Add a site manager to a grok.Site object whenever it's added to
+    a container."""
+    sitemanager = LocalSiteManager(site)
+    # LocalSiteManager creates the 'default' folder in its __init__.
+    # It's not needed anymore in new versions of Zope 3, therefore we
+    # remove it
+    del sitemanager['default']
+    site.setSiteManager(sitemanager)
+
+
 class Application(Site):
     """A top-level application object."""
     interface.implements(interfaces.IApplication)

Modified: grok/branches/philikon-grokcore.component/src/grok/configure.zcml
===================================================================
--- grok/branches/philikon-grokcore.component/src/grok/configure.zcml	2007-08-24 00:52:25 UTC (rev 79199)
+++ grok/branches/philikon-grokcore.component/src/grok/configure.zcml	2007-08-24 00:58:00 UTC (rev 79200)
@@ -41,6 +41,8 @@
       name="index"
       />
 
+  <subscriber handler=".components.addSiteHandler" />
+
   <!-- we register special IAbsoluteURL views on grok views so that
        can have them inspect __view_name__ instead of __name__.  
        __name__ is already used as the class name, and overriding it

Modified: grok/branches/philikon-grokcore.component/src/grok/tests/site/site.py
===================================================================
--- grok/branches/philikon-grokcore.component/src/grok/tests/site/site.py	2007-08-24 00:52:25 UTC (rev 79199)
+++ grok/branches/philikon-grokcore.component/src/grok/tests/site/site.py	2007-08-24 00:58:00 UTC (rev 79200)
@@ -26,9 +26,14 @@
   >>> ISite.providedBy(herd)
   False
   
-When a site is added to a container it will be initialized as a site (
-when the ObjectAddedEvent is fired):
+When a site is added to a container it will be initialized as a site
+(when the ObjectAddedEvent is fired for which we first need to
+register the subscriber):
 
+  >>> import zope.component
+  >>> import grok.components
+  >>> zope.component.provideHandler(grok.components.addSiteHandler)
+
   >>> nonsitecontainer['manfred'] = manfred
   >>> ISite.providedBy(manfred)
   True



More information about the Checkins mailing list