--- 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