[Checkins] SVN: Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/ Less ZCML, spell out interface of this package.
Martijn Faassen
faassen at infrae.com
Fri Oct 17 13:41:51 EDT 2008
Log message for revision 92336:
Less ZCML, spell out interface of this package.
Changed:
U Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/__init__.py
U Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/components.py
U Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/configure.zcml
U Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/directive.py
U Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/interfaces.py
-=-
Modified: Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/__init__.py
===================================================================
--- Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/__init__.py 2008-10-17 17:28:29 UTC (rev 92335)
+++ Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/__init__.py 2008-10-17 17:41:50 UTC (rev 92336)
@@ -1,6 +1,6 @@
##############################################################################
#
-# Copyright (c) 2006-2007 Zope Corporation and Contributors.
+# Copyright (c) 2006-2008 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
@@ -11,3 +11,9 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
+
+from grokcore.site.directive import local_utility
+from grokcore.site.components import Site, LocalUtility
+
+from grokcore.site.interfaces import IGrokcoreSiteAPI
+__all__ = list(IGrokcoreSiteAPI)
Modified: Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/components.py
===================================================================
--- Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/components.py 2008-10-17 17:28:29 UTC (rev 92335)
+++ Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/components.py 2008-10-17 17:41:50 UTC (rev 92336)
@@ -12,18 +12,21 @@
#
##############################################################################
-from zope import component
-from zope import interface
+import grokcore.component
+from grokcore.component.interfaces import IContext
+from persistent import Persistent
+
+from zope.interface import implements
+from zope.app.component.site import SiteManagerContainer, LocalSiteManager
+
from zope.app.container.interfaces import IObjectAddedEvent
-from zope.app.container.interfaces import IOrderedContainer
-from zope.app.component.site import SiteManagerContainer
-from zope.app.component.site import LocalSiteManager
+from zope.app.container.contained import Contained
class Site(SiteManagerContainer):
pass
- at component.adapter(Site, IObjectAddedEvent)
+ at grokcore.component.subscribe(Site, IObjectAddedEvent)
def addSiteHandler(site, event):
sitemanager = LocalSiteManager(site)
# LocalSiteManager creates the 'default' folder in its __init__.
@@ -32,5 +35,5 @@
del sitemanager['default']
site.setSiteManager(sitemanager)
-class LocalUtility(Model):
- pass
+class LocalUtility(Contained, Persistent):
+ implements(IContext)
Modified: Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/configure.zcml
===================================================================
--- Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/configure.zcml 2008-10-17 17:28:29 UTC (rev 92335)
+++ Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/configure.zcml 2008-10-17 17:41:50 UTC (rev 92336)
@@ -3,82 +3,13 @@
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:grok="http://namespaces.zope.org/grok">
- <include package="zope.security" file="meta.zcml" />
- <include package="zope.i18n" file="meta.zcml" />
<include package="zope.securitypolicy" file="meta.zcml" />
<include package="zope.app.zcmlfiles" file="meta.zcml" />
- <include package="grok" file="meta.zcml" />
+ <include package="grokcore.component" file="meta.zcml" />
- <include package="zope.annotation" />
- <include package="zope.copypastemove" />
- <include package="zope.contentprovider" />
- <include package="zope.formlib" />
- <include package="zope.i18n.locales" />
- <include package="zope.publisher" />
<include package="zope.securitypolicy" />
- <include package="zope.size" />
- <include package="zope.traversing" />
- <include package="zope.traversing.browser" />
- <include package="zope.app.zcmlfiles" />
- <include package="zope.app.authentication" />
- <include package="zope.app.intid" />
- <include package="zope.app.keyreference" />
- <include package="zope.app.catalog" />
- <include package="zope.app.renderer" />
- <include package="zope.app.session" />
- <include package="grokcore.view" />
- <include package="grokcore.formlib" />
-
<securityPolicy
component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
- <adapter factory=".components.ContextTraverser" />
- <adapter factory=".components.ContainerTraverser" />
-
- <browser:defaultView
- for=".interfaces.IContext"
- name="index"
- />
-
- <subscriber handler=".components.addSiteHandler" />
-
- <!-- we register a ++rest++ traversal namespace -->
- <adapter
- factory=".rest.rest_skin"
- for="* zope.publisher.interfaces.browser.IHTTPRequest"
- provides="zope.traversing.interfaces.ITraversable"
- name="rest"
- />
-
- <!-- this overrides Zope 3's publication factories because they have
- the same name; we also need to change the priority because of
- the ZCML discriminator -->
- <publisher
- name="XMLRPC"
- factory=".publication.GrokXMLRPCFactory"
- methods="POST"
- mimetypes="text/xml"
- priority="21"
- />
-
- <publisher
- name="BROWSER"
- factory=".publication.GrokBrowserFactory"
- methods="GET POST HEAD"
- mimetypes="*"
- priority="11"
- />
-
- <publisher
- name="HTTP"
- factory=".publication.GrokHTTPFactory"
- methods="*"
- mimetypes="*"
- priority="1"
- />
-
- <!-- need to grok this for some basic REST support -->
- <grok:grok package=".rest" />
-
</configure>
Modified: Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/directive.py
===================================================================
--- Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/directive.py 2008-10-17 17:28:29 UTC (rev 92335)
+++ Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/directive.py 2008-10-17 17:41:50 UTC (rev 92336)
@@ -14,7 +14,9 @@
"""Grok directives.
"""
-import grok
+import grokcore.component
+import grokcore.site
+
from zope import interface
from zope.interface.interfaces import IInterface
@@ -33,11 +35,12 @@
"provides argument of %s." % self.name)
if provides is None:
- provides = grok.provides.bind().get(factory)
+ provides = grokcore.component.provides.bind().get(factory)
if provides is None:
- if util.check_subclass(factory, grok.LocalUtility):
- baseInterfaces = interface.implementedBy(grok.LocalUtility)
+ if util.check_subclass(factory, grokcore.site.LocalUtility):
+ baseInterfaces = interface.implementedBy(
+ grokcore.site.LocalUtility)
utilityInterfaces = interface.implementedBy(factory)
provides = list(utilityInterfaces - baseInterfaces)
@@ -88,9 +91,3 @@
# LocalUtilityInfos have an inherit sort order by which the
# registrations take place.
return cmp(self.order, other.order)
-
-
-class site(martian.Directive):
- scope = martian.CLASS
- store = martian.ONCE
- validate = martian.validateInterfaceOrClass
Modified: Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/interfaces.py
===================================================================
--- Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/interfaces.py 2008-10-17 17:28:29 UTC (rev 92335)
+++ Sandbox/faassen/grokcore.site/trunk/src/grokcore/site/interfaces.py 2008-10-17 17:41:50 UTC (rev 92336)
@@ -11,3 +11,29 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
+
+from zope.interface import Interface, Attribute
+
+class IBaseClasses(Interface):
+ Site = Attribute("Mixin class for sites.")
+ LocalUtility = Attribute("Base class for local utilities.")
+
+class IDirectives(Interface):
+ def local_utility(factory, provides=None, name=u'',
+ setup=None, public=False, name_in_container=None):
+ """Register a local utility.
+
+ factory - the factory that creates the local utility
+ provides - the interface the utility should be looked up with
+ name - the name of the utility
+ setup - a callable that receives the utility as its single argument,
+ it is called after the utility has been created and stored
+ public - if False, the utility will be stored below ++etc++site
+ if True, the utility will be stored directly in the site.
+ The site should in this case be a container.
+ name_in_container - the name to use for storing the utility
+ """
+
+class IGrokcoreSiteAPI(IBaseClasses, IDirectives):
+ """grokcore.site's public API."""
+
More information about the Checkins
mailing list