[CMF-checkins] CVS: CMF - ActionsTool.py:1.10.4.1 CMFCorePermissions.py:1.6.6.1 PortalFolder.py:1.18.2.1

tseaver@digicool.com tseaver@digicool.com
Tue, 19 Jun 2001 15:06:00 -0400 (EDT)


Update of /cvs-repository/CMF/CMFCore
In directory korak.digicool.com:/tmp/cvs-serv18095/CMFCore

Modified Files:
      Tag: listfoldercontents-branch
	ActionsTool.py CMFCorePermissions.py PortalFolder.py 
Log Message:


 - Implement new "List folder contents" permission (Tracker #320).



--- Updated File ActionsTool.py in package CMF --
--- ActionsTool.py	2001/06/07 00:23:45	1.10
+++ ActionsTool.py	2001/06/19 19:05:29	1.10.4.1
@@ -301,7 +301,7 @@
                 actions.append({
                     'name': 'Folder contents',
                     'url': folder_url + '/folder_contents',
-                    'permissions' : ['Access contents information'],
+                    'permissions' : ['List folder contents'],
                     'category': 'folder',
                     })
             pm = getToolByName(self, 'portal_membership')

--- Updated File CMFCorePermissions.py in package CMF --
--- CMFCorePermissions.py	2001/05/24 20:39:39	1.6
+++ CMFCorePermissions.py	2001/06/19 19:05:29	1.6.6.1
@@ -32,6 +32,9 @@
 # CMF Base Permissions
 #
 
+ListFolderContents = 'List folder contents'
+setDefaultRoles( ListFolderContents, ( 'Manager', 'Owner' ) )
+
 AccessInactivePortalContent = 'Access inactive portal content'
 setDefaultRoles(AccessInactivePortalContent, ('Manager',))
 

--- Updated File PortalFolder.py in package CMF --
--- PortalFolder.py	2001/06/13 00:08:46	1.18
+++ PortalFolder.py	2001/06/19 19:05:29	1.18.2.1
@@ -91,7 +91,7 @@
 import Globals, re, base64, marshal, string
 import CMFCorePermissions
 
-from CMFCorePermissions import View, ManageProperties
+from CMFCorePermissions import View, ManageProperties, ListFolderContents
 from CMFCorePermissions import AddPortalFolders, AddPortalContent
 from OFS.Folder import Folder
 from OFS.ObjectManager import REPLACEABLE
@@ -183,7 +183,7 @@
         ob=PortalFolder(id, title)
         self._setObject(id, ob)
         if REQUEST is not None:
-            return self.folder_contents(
+            return self.folder_contents( # XXX: ick!
                 self, REQUEST, portal_status_message="Folder added")
     
     def _morphSpec(self, spec):
@@ -259,6 +259,15 @@
         ids = self.objectIds( spec )
         return map( lambda item: item[1],
                     self._filteredItems( ids, filter ) )
+
+    security.declareProtected( ListFolderContents
+                             , 'listFolderContents' )
+    def listFolderContents( self, spec=None, filter=None ): # XXX
+        """
+            Hook around 'contentValues' to let 'folder_contents'
+            be protected.
+        """
+        return self.contentValues( filter=filter )
 
     security.declarePublic('contentItems')
     def contentItems( self, spec=None, filter=None ):