[Checkins] SVN: grokcore.view/trunk/src/grokcore/view/ Make static ftest pass (last remaining failure). In regular Zope 3 we need

Philipp von Weitershausen philikon at philikon.de
Sat Aug 2 10:35:06 EDT 2008


Log message for revision 89235:
  Make static ftest pass (last remaining failure). In regular Zope 3 we need 
  to define checkers for resources.  For now, we just define public ones.
  

Changed:
  U   grokcore.view/trunk/src/grokcore/view/components.py
  U   grokcore.view/trunk/src/grokcore/view/meta.py

-=-
Modified: grokcore.view/trunk/src/grokcore/view/components.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/components.py	2008-08-02 14:19:23 UTC (rev 89234)
+++ grokcore.view/trunk/src/grokcore/view/components.py	2008-08-02 14:35:05 UTC (rev 89235)
@@ -240,16 +240,14 @@
         resource_factories[type] = factory
 
 
-class DirectoryResourceFactory(object):
+class DirectoryResourceFactory(directoryresource.DirectoryResourceFactory):
     # We need this to allow hooking up our own GrokDirectoryResource
     # and to set the checker to None (until we have our own checker)
 
-    def __init__(self, path, name):
-        # XXX we're not sure about the checker=None here
-        self.__dir = directoryresource.Directory(path, None, name)
-        self.__name = name
-
     def __call__(self, request):
+        # Override this method for the following line, in which our
+        # custom DirectoryResource class is instantiated.
         resource = DirectoryResource(self.__dir, request)
+        resource.__Security_checker__ = self.__checker
         resource.__name__ = self.__name
         return resource

Modified: grokcore.view/trunk/src/grokcore/view/meta.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta.py	2008-08-02 14:19:23 UTC (rev 89234)
+++ grokcore.view/trunk/src/grokcore/view/meta.py	2008-08-02 14:35:05 UTC (rev 89235)
@@ -17,6 +17,7 @@
 
 import zope.component.interface
 from zope import interface, component
+from zope.security.checker import NamesChecker
 from zope.interface.interface import InterfaceClass
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 from zope.publisher.interfaces.browser import IBrowserRequest
@@ -177,6 +178,10 @@
         return True
 
 
+allowed_resource_names = ('GET', 'HEAD', 'publishTraverse', 'browserDefault',
+                          'request', '__call__')
+allowed_resourcedir_names = allowed_resource_names + ('__getitem__', 'get')
+
 class StaticResourcesGrokker(martian.GlobalGrokker):
 
     def grok(self, name, module, module_info, config, **kw):
@@ -200,8 +205,11 @@
                         "resource directory and a module named "
                         "'static.py'", module_info.getModule())
 
+        # public checker by default
+        checker = NamesChecker(allowed_resourcedir_names)
+
         resource_factory = components.DirectoryResourceFactory(
-            resource_path, module_info.dotted_name)
+            resource_path, checker, module_info.dotted_name)
         adapts = (IDefaultBrowserLayer,)
         provides = interface.Interface
         name = module_info.dotted_name



More information about the Checkins mailing list