# HG changeset patch # User Thierry Florac # Date 1267569323 -3600 # Node ID 9b882e41b6d2946435581b065fa013bfb0f2c8fe # Parent 11b11c5a4f9e3d76cf8eed34e67139a1ef8e85da Added getPrincipal function diff -r 11b11c5a4f9e -r 9b882e41b6d2 ztfy/utils/security.py --- a/ztfy/utils/security.py Tue Mar 02 23:34:55 2010 +0100 +++ b/ztfy/utils/security.py Tue Mar 02 23:35:23 2010 +0100 @@ -18,11 +18,14 @@ from persistent.dict import PersistentDict # import Zope3 interfaces +from zope.app.authentication.interfaces import IPrincipalInfo # import local interfaces # import Zope3 packages from zc.set import Set +from zope.app import zapi +from zope.interface import implements from zope.security.proxy import removeSecurityProxy # import local packages @@ -45,3 +48,27 @@ else: result = removeSecurityProxy(value) return result + + +class MissingPrincipal(object): + + implements(IPrincipalInfo) + + def __init__(self, id): + self.id = id + + @property + def title(self): + return _("< missing principal %s>") % self.id + + @property + def description(self): + return _("This principal can't be found in any authentication utility...") + + +def getPrincipal(uid): + principals = zapi.principals() + try: + return principals.getPrincipal(uid) + except: + return MissingPrincipal(uid)