[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