src/pyams_security/security.py
changeset 42 07229ac2497b
parent 39 51a07039228f
child 44 b999bd4dd461
--- a/src/pyams_security/security.py	Wed May 20 12:31:27 2015 +0200
+++ b/src/pyams_security/security.py	Wed Jun 17 09:59:18 2015 +0200
@@ -27,7 +27,6 @@
 from pyams_utils.adapter import adapter_config
 from pyams_utils.property import request_property
 from pyams_utils.registry import query_utility
-from pyams_utils.request import check_request
 from pyramid.location import lineage
 from pyramid.security import DENY_ALL, Everyone, Allow, ALL_PERMISSIONS, Authenticated
 from pyramid.threadlocal import get_current_registry
@@ -88,7 +87,7 @@
         self._authenticated_permissions = value
 
     def grant_role(self, role_id, principal_ids):
-        registry = check_request().registry
+        registry = get_current_registry()
         if IRole.providedBy(role_id):
             role_id = role_id.id
         if isinstance(principal_ids, str):
@@ -106,13 +105,13 @@
                 registry.notify(GrantedRoleEvent(self, role_id, principal_id))
 
     def revoke_role(self, role_id, principal_ids):
-        registry = check_request().registry
+        registry = get_current_registry()
         if IRole.providedBy(role_id):
             role_id = role_id.id
         if isinstance(principal_ids, str):
             principal_ids = {principal_ids}
         role_principals = self._principals_by_role.get(role_id) or set()
-        for principal_id in principal_ids:
+        for principal_id in principal_ids.copy():
             if IPrincipalInfo.providedBy(principal_id):
                 principal_id = principal_id.id
             if principal_id in role_principals:
@@ -140,7 +139,7 @@
         return self._roles_by_principal.get(principal_id) or set()
 
     def get_permissions(self, principal_id):
-        registry = check_request().registry
+        registry = get_current_registry()
         result = set()
         for role_id in self.get_roles(principal_id):
             role = registry.queryUtility(IRole, role_id)