[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ Updated setDefaultRoles to use the addPermission API if available.

Hanno Schlichting hannosch at hannosch.eu
Sun Jun 6 09:06:06 EDT 2010


Log message for revision 113180:
  Updated setDefaultRoles to use the addPermission API if available.
  

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
  U   Products.CMFCore/trunk/Products/CMFCore/permissions.py

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt	2010-06-06 12:59:15 UTC (rev 113179)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt	2010-06-06 13:06:05 UTC (rev 113180)
@@ -4,6 +4,8 @@
 2.3.0-alpha (unreleased)
 ------------------------
 
+- Updated setDefaultRoles to use the addPermission API if available.
+
 - Added a permissions.zcml file defining our own permissions. This was
   formerly done in Zope 2's Products.Five.
 

Modified: Products.CMFCore/trunk/Products/CMFCore/permissions.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/permissions.py	2010-06-06 12:59:15 UTC (rev 113179)
+++ Products.CMFCore/trunk/Products/CMFCore/permissions.py	2010-06-06 13:06:05 UTC (rev 113180)
@@ -55,20 +55,29 @@
 security.declarePublic('ViewManagementScreens')
 ViewManagementScreens = Permissions.view_management_screens
 
+addPermission = None
+try:
+    from AccessControl.Permission import addPermission
+except ImportError:
+    pass
+
 security.declarePrivate('setDefaultRoles')
 def setDefaultRoles(permission, roles):
     '''
     Sets the defaults roles for a permission.
     '''
-    import Products
-    # XXX This ought to be in AccessControl.SecurityInfo.
-    registered = _registeredPermissions
-    if not registered.has_key(permission):
-        registered[permission] = 1
-        Products.__ac_permissions__=(
-            Products.__ac_permissions__+((permission,(),roles),))
-        mangled = pname(permission)
-        setattr(ApplicationDefaultPermissions, mangled, roles)
+    if addPermission is not None:
+        addPermission(permission, roles)
+    else:
+        # BBB This is in AccessControl starting in Zope 2.13
+        import Products
+        registered = _registeredPermissions
+        if not registered.has_key(permission):
+            registered[permission] = 1
+            Products.__ac_permissions__=(
+                Products.__ac_permissions__+((permission,(),roles),))
+            mangled = pname(permission)
+            setattr(ApplicationDefaultPermissions, mangled, roles)
 
 # Note that we can only use the default Zope roles in calls to
 # setDefaultRoles().  The default Zope roles are:



More information about the checkins mailing list