[Checkins] SVN: z3ext.security/trunk/ Query all IPrincipalPermissionMap adapter for context

Nikolay Kim fafhrd at datacom.kz
Fri Jan 9 02:36:38 EST 2009


Log message for revision 94670:
  Query all IPrincipalPermissionMap adapter for context

Changed:
  U   z3ext.security/trunk/CHANGES.txt
  U   z3ext.security/trunk/src/z3ext/security/securitypolicy.py

-=-
Modified: z3ext.security/trunk/CHANGES.txt
===================================================================
--- z3ext.security/trunk/CHANGES.txt	2009-01-09 05:27:41 UTC (rev 94669)
+++ z3ext.security/trunk/CHANGES.txt	2009-01-09 07:36:38 UTC (rev 94670)
@@ -2,6 +2,12 @@
 CHANGES
 =======
 
+1.2.2 (2009-01-09)
+------------------
+
+- Query all IPrincipalPermissionMap adapter for context
+
+
 1.2.1 (2008-09-02)
 ------------------
 

Modified: z3ext.security/trunk/src/z3ext/security/securitypolicy.py
===================================================================
--- z3ext.security/trunk/src/z3ext/security/securitypolicy.py	2009-01-09 05:27:41 UTC (rev 94669)
+++ z3ext.security/trunk/src/z3ext/security/securitypolicy.py	2009-01-09 07:36:38 UTC (rev 94670)
@@ -36,6 +36,7 @@
     prinper = None
     roles_adapters = None
     principal_roles_adapters = None
+    principal_permission_adapters = None
 
     def __init__(self):
         self.prin = {}
@@ -144,14 +145,15 @@
             cache_prin_per[permission] = prinper
             return prinper
 
-        prinper = cache.prinper
-        if prinper is None:
-            cache.prinper = prinper = IPrincipalPermissionMap(parent, None)
+        # cache adaters
+        adapters = cache.principal_permission_adapters
+        if adapters is None:
+            adapters = tuple(getAdapters((parent,), IPrincipalPermissionMap))
+            cache.principal_permission_adapters = adapters
 
-        if prinper is not None:
+        for name, prinper in adapters:
             prinper = SettingAsBoolean[
-                prinper.getSetting(permission, principal, None)
-                ]
+                prinper.getSetting(permission, principal, None)]
             if prinper is not None:
                 cache_prin_per[permission] = prinper
                 return prinper



More information about the Checkins mailing list