[Checkins] SVN: five.grok/trunk/ Fix a bug with unrestrictedTraverse() and directory resource subdirectories

Martin Aspeli optilude at gmx.net
Wed Jun 16 12:38:54 EDT 2010


Log message for revision 113566:
  Fix a bug with unrestrictedTraverse() and directory resource subdirectories

Changed:
  U   five.grok/trunk/docs/HISTORY.txt
  U   five.grok/trunk/src/five/grok/components.py
  U   five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py

-=-
Modified: five.grok/trunk/docs/HISTORY.txt
===================================================================
--- five.grok/trunk/docs/HISTORY.txt	2010-06-16 16:38:19 UTC (rev 113565)
+++ five.grok/trunk/docs/HISTORY.txt	2010-06-16 16:38:54 UTC (rev 113566)
@@ -4,7 +4,10 @@
 1.1.2 (unreleased)
 ------------------
 
-- ...
+- Fixed problem with unrestrictedTraverse() and files in subfolders of grokked
+  resource directories. This fix also depends on fixes in Zope 2.12.6 or
+  later.
+  [optilude]
 
 1.1.1 (2010-02-04)
 ------------------

Modified: five.grok/trunk/src/five/grok/components.py
===================================================================
--- five.grok/trunk/src/five/grok/components.py	2010-06-16 16:38:19 UTC (rev 113565)
+++ five.grok/trunk/src/five/grok/components.py	2010-06-16 16:38:54 UTC (rev 113566)
@@ -150,7 +150,10 @@
 
     # Allow traversal to contained resources from protected code
     __allow_access_to_unprotected_subobjects__ = True
-
+    
+    # Allow subdirectories to work with restrictedTraverse() (in Zope >= 2.12.6)
+    __roles__ = None
+    
     resource_factories = {}
     for type, factory in (resource.DirectoryResource.resource_factories.items()):
         if factory is resource.PageTemplateResourceFactory:

Modified: five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py
===================================================================
--- five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py	2010-06-16 16:38:19 UTC (rev 113565)
+++ five.grok/trunk/src/five/grok/ftests/directoryresource/dirresource.py	2010-06-16 16:38:54 UTC (rev 113566)
@@ -64,4 +64,15 @@
   >>> print browser.contents
   Baz resource file's content.
 
+We can restricted-traverse to resources in directories and subdirectories:
+
+  >>> app.restrictedTraverse('++resource++five.grok.ftests.directoryresource.fixture.resource/file.txt')
+  <Products.Five.browser.resource.FileResource object at ...>
+  
+  >>> app.restrictedTraverse('++resource++frupple/file.txt')
+  <Products.Five.browser.resource.FileResource object at ...>
+  
+  >>> app.restrictedTraverse('++resource++fropple/baz/file.txt')
+  <Products.Five.browser.resource.FileResource object at ...>
+
 """



More information about the checkins mailing list