[Checkins] SVN: zope.app.authentication/trunk/src/zope/app/authentication/principalfolder. add a way to get a principal id based on the login

Fred L. Drake, Jr. fdrake at gmail.com
Mon Aug 13 16:46:49 EDT 2007


Log message for revision 78799:
  add a way to get a principal id based on the login

Changed:
  U   zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.py
  U   zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.txt

-=-
Modified: zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.py
===================================================================
--- zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.py	2007-08-13 19:13:38 UTC (rev 78798)
+++ zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.py	2007-08-13 20:46:48 UTC (rev 78799)
@@ -85,6 +85,16 @@
         default=u'',
         readonly=True)
 
+    def getIdByLogin(login):
+        """Return the principal id currently associated with login.
+
+        The return value includes the container prefix, but does not
+        include the PAU prefix.
+
+        KeyError is raised if no principal is associated with login.
+
+        """
+
     contains(IInternalPrincipal)
 
 
@@ -289,6 +299,9 @@
                 return PrincipalInfo(id, internal.login, internal.title,
                                      internal.description)
 
+    def getIdByLogin(self, login):
+        return self.prefix + self.__id_by_login[login]
+
     def search(self, query, start=None, batch_size=None):
         """Search through this principal provider."""
         search = query.get('search')

Modified: zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.txt
===================================================================
--- zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.txt	2007-08-13 19:13:38 UTC (rev 78798)
+++ zope.app.authentication/trunk/src/zope/app/authentication/principalfolder.txt	2007-08-13 20:46:48 UTC (rev 78799)
@@ -115,6 +115,19 @@
    u'principal.16',
    u'principal.17']
 
+There is an additional method that allows requesting the principal id
+associated with a login id.  The method raises KeyError when there is
+no associated principal::
+
+  >>> principals.getIdByLogin("not-there")
+  Traceback (most recent call last):
+  KeyError: 'not-there'
+
+If there is a matching principal, the id is returned::
+
+  >>> principals.getIdByLogin("login1")
+  u'principal.p1'
+
 Changing credentials
 --------------------
 Credentials can be changed by modifying principal-information objects:



More information about the Checkins mailing list