[Checkins] SVN: grok/trunk/src/grok/ Public can only be set True if the site is a container.

Martijn Faassen faassen at infrae.com
Sun Jan 7 11:11:48 EST 2007


Log message for revision 71777:
  Public can only be set True if the site is a container.
  

Changed:
  U   grok/trunk/src/grok/ftests/utility/public.py
  U   grok/trunk/src/grok/meta.py

-=-
Modified: grok/trunk/src/grok/ftests/utility/public.py
===================================================================
--- grok/trunk/src/grok/ftests/utility/public.py	2007-01-07 16:01:23 UTC (rev 71776)
+++ grok/trunk/src/grok/ftests/utility/public.py	2007-01-07 16:11:48 UTC (rev 71777)
@@ -43,4 +43,3 @@
 
 class Cave2(grok.Container, grok.Site):
     grok.local_utility(Fireplace, public=False, name_in_container='fireplace')
-

Modified: grok/trunk/src/grok/meta.py
===================================================================
--- grok/trunk/src/grok/meta.py	2007-01-07 16:01:23 UTC (rev 71776)
+++ grok/trunk/src/grok/meta.py	2007-01-07 16:11:48 UTC (rev 71777)
@@ -10,6 +10,7 @@
 from zope.security.permission import Permission
 from zope.security.interfaces import IPermission
 
+from zope.app.container.interfaces import IContainer
 from zope.app.publisher.xmlrpc import MethodPublisher
 from zope.app.container.interfaces import INameChooser
 
@@ -308,6 +309,11 @@
             return
 
         for info in infos:
+            if info.public and not IContainer.implementedBy(factory):
+                raise GrokError(
+                    "Cannot set public to True with grok.local_utility as "
+                    "the site (%r) is not a container." %
+                    factory, factory)
             if info.provides is None:
                 provides = []
                 if util.check_subclass(info.factory, grok.LocalUtility):



More information about the Checkins mailing list