[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