src/pyams_security/utility.py
changeset 42 07229ac2497b
parent 12 f227ffa9e824
child 55 5713898178f3
--- a/src/pyams_security/utility.py	Wed May 20 12:31:27 2015 +0200
+++ b/src/pyams_security/utility.py	Wed Jun 17 09:59:18 2015 +0200
@@ -17,6 +17,8 @@
 import logging
 logger = logging.getLogger('PyAMS (security)')
 
+from functools import lru_cache
+
 # import interfaces
 from pyams_security.interfaces import ISecurityManager, ICredentialsPlugin, IAuthenticationPlugin, \
     IDirectoryPlugin, AuthenticatedPrincipalEvent, IProtectedObject, IGroupsAwareDirectoryPlugin
@@ -162,12 +164,13 @@
         return principals
 
     # IDirectoryPlugin interface methods
-    def get_principal(self, principal_id):
+    @lru_cache(maxsize=100)
+    def get_principal(self, principal_id, info=True):
         if not principal_id:
             return UnknownPrincipal
         for plugin in self.get_directory_plugins():
             try:
-                principal = plugin.get_principal(principal_id)
+                principal = plugin.get_principal(principal_id, info)
             except:
                 logging.debug("Can't get principal {0}!".format(principal_id), exc_info=True)
                 continue