[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - all_meta_types isn't always callable

Yvo Schubbe cvs-admin at zope.org
Tue Oct 15 17:00:42 CEST 2013


Log message for revision 130335:
  - all_meta_types isn't always callable

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/TypesTool.py
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/TypesTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/TypesTool.py	2013-10-15 09:35:30 UTC (rev 130334)
+++ Products.CMFCore/trunk/Products/CMFCore/TypesTool.py	2013-10-15 15:00:41 UTC (rev 130335)
@@ -515,7 +515,10 @@
             # newstyle factory
             m = queryUtility(IFactory, self.factory, None)
             if m is not None:
-                for d in container.all_meta_types():
+                meta_types = container.all_meta_types
+                if callable(meta_types):
+                    meta_types = meta_types()
+                for d in meta_types:
                     if d['name'] == self.content_meta_type:
                         sm = getSecurityManager()
                         ti_check = sm.checkPermission(d['permission'],

Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py	2013-10-15 09:35:30 UTC (rev 130334)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py	2013-10-15 15:00:41 UTC (rev 130335)
@@ -574,6 +574,10 @@
         newSecurityManager(None, UserWithRoles('FooViewer').__of__(self.f))
         self.assertFalse(self.ti.isConstructionAllowed(self.f))
 
+    def test_isConstructionAllowed_w_all_meta_types_not_callable(self):
+        self.f.all_meta_types = ({'name': 'Dummy', 'permission': 'addFoo'},)
+        self.assertTrue(self.ti.isConstructionAllowed(self.f))
+
     def test_constructInstance_wo_Roles(self):
         from AccessControl.SecurityManagement import newSecurityManager
         from AccessControl.unauthorized import Unauthorized



More information about the checkins mailing list