[Checkins] SVN: CMF/branches/2.1/C Pass 'object' through to TypeInformation objects' 'listActions'.

Tres Seaver tseaver at palladion.com
Thu Jun 7 12:20:52 EDT 2007


Log message for revision 76466:
  Pass 'object' through to TypeInformation objects' 'listActions'.
  
  o http://www.zope.org/Collectors/CMF/482
  

Changed:
  U   CMF/branches/2.1/CHANGES.txt
  U   CMF/branches/2.1/CMFCore/TypesTool.py
  U   CMF/branches/2.1/CMFCore/tests/test_TypesTool.py

-=-
Modified: CMF/branches/2.1/CHANGES.txt
===================================================================
--- CMF/branches/2.1/CHANGES.txt	2007-06-07 15:42:51 UTC (rev 76465)
+++ CMF/branches/2.1/CHANGES.txt	2007-06-07 16:20:51 UTC (rev 76466)
@@ -2,19 +2,22 @@
 
   Bug Fixes
 
-    - Removed extraneous "Cache" tab from FS-based skin objects
-      http://www.zope.org/Collectors/CMF/343
+    - Pass 'object' through to TypeInformation objects' 'listActions'.
+      (http://www.zope.org/Collectors/CMF/482)
+      
+    - Removed extraneous "Cache" tab from FS-based skin objects.
+      (http://www.zope.org/Collectors/CMF/343)
 
     - CMFCore.WorkflowTool: Using the '(Default)' keyword for a type's 
-      workflow chain will now reset any custom workflow chains for the type
+      workflow chain will now reset any custom workflow chains for the type.
       (http://www.zope.org/Collectors/CMF/475)
 
     - Use the property API to get the member specific skin, because
       direct attribute access won't work with PAS based membership.
       (http://dev.plone.org/plone/ticket/5904)
 
-    - Add POST-only protections to security critical methods (see
-      http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0240).
+    - Add POST-only protections to security critical methods.
+      http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0240)
 
     - Allow customization from DirectoryViews to be redirected into
       alternate folders, and use manually-built clones.

Modified: CMF/branches/2.1/CMFCore/TypesTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/TypesTool.py	2007-06-07 15:42:51 UTC (rev 76465)
+++ CMF/branches/2.1/CMFCore/TypesTool.py	2007-06-07 16:20:51 UTC (rev 76466)
@@ -734,7 +734,7 @@
         if object is not None:
             type_info = self.getTypeInfo(object)
             if type_info is not None:
-                actions.extend( type_info.listActions() )
+                actions.extend( type_info.listActions(info, object) )
 
         return actions
 

Modified: CMF/branches/2.1/CMFCore/tests/test_TypesTool.py
===================================================================
--- CMF/branches/2.1/CMFCore/tests/test_TypesTool.py	2007-06-07 15:42:51 UTC (rev 76465)
+++ CMF/branches/2.1/CMFCore/tests/test_TypesTool.py	2007-06-07 16:20:51 UTC (rev 76466)
@@ -35,6 +35,7 @@
 from Products.CMFCore.testing import FunctionalZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyFactory
 from Products.CMFCore.tests.base.dummy import DummyFactoryDispatcher
+from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummyFolder
 from Products.CMFCore.tests.base.dummy import DummyObject
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -48,7 +49,20 @@
 from Products.CMFCore.tests.base.tidata import FTIDATA_DUMMY
 from Products.CMFCore.tests.base.tidata import STI_SCRIPT
 
+from zope.interface import implements
+from Products.CMFCore.interfaces import ITypeInformation
 
+class ActionTesterTypeInfo:
+
+    implements(ITypeInformation)
+
+    id = 'Dummy Content'
+
+    def listActions(self, info=None, obj=None):
+        self._action_info = info
+        self._action_obj = obj
+        return ()
+
 class TypesToolTests(SecurityTest, WarningInterceptor):
 
     layer = FunctionalZCMLLayer
@@ -92,6 +106,20 @@
         verifyClass(IActionProvider, TypesTool)
         verifyClass(ITypesTool, TypesTool)
 
+    def test_listActions(self):
+        """test that a full set of context information is passed
+           by the types tool
+        """
+        tool = self.ttool
+        ti = ActionTesterTypeInfo()
+        setattr( tool, 'Dummy Content', ti )
+
+        dummy = self.site._setObject('dummy', DummyContent('dummy'))
+        tool.listActions('fake_info', dummy)
+
+        self.assertEqual(ti._action_info, 'fake_info')
+        self.assertEqual(ti._action_obj, dummy)
+
     def test_allMetaTypes(self):
         """
         Test that everything returned by allMetaTypes can be



More information about the Checkins mailing list