[Checkins] SVN: grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ fixed app.py and removed tests for user annotations; all tests pass

Luciano Ramalho luciano at ramalho.org
Sun Jan 13 09:11:28 EST 2008


Log message for revision 82839:
  fixed app.py and removed tests for user annotations; all tests pass

Changed:
  U   grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/app.py
  U   grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/join.txt
  U   grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/member.txt

-=-
Modified: grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/app.py
===================================================================
--- grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/app.py	2008-01-13 13:59:50 UTC (rev 82838)
+++ grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/app.py	2008-01-13 14:11:28 UTC (rev 82839)
@@ -2,9 +2,10 @@
 
 from urllib import urlencode
 
-from zope.interface import Interface
-from zope.component import getUtility
+from zope.interface import Interface, implements
+from zope.component import getUtility, getUtilitiesFor
 from zope.app.authentication import PluggableAuthentication
+from zope.app.authentication.interfaces import IPasswordManager
 from zope.app.authentication.principalfolder import PrincipalFolder
 from zope.app.authentication.principalfolder import InternalPrincipal
 from zope.app.authentication.principalfolder import IInternalPrincipal
@@ -12,7 +13,7 @@
 from zope.app.security.interfaces import IAuthentication
 from zope.app.security.interfaces import IUnauthenticatedPrincipal
 from zope.app.securitypolicy.interfaces import IPrincipalPermissionManager
-from zope.schema.interfaces import IField
+from zope.schema.interfaces import IField, IIterableSource
 from zope.i18n import MessageFactory
 
 _ = MessageFactory('logindemo')
@@ -172,3 +173,20 @@
                 fields[field] = getattr(user, field)
             roster.append(fields)
         return roster
+
+class PasswordManagerChoices(object):
+    implements(IIterableSource)
+    
+    def __init__(self):
+        self.choices = [name for name, util in
+                            sorted(getUtilitiesFor(IPasswordManager))]
+        
+    def __iter__(self):
+        return iter(self.choices)
+    
+    def __len__(self):
+        return len(self.choices)
+    
+    def __contains__(self, value):
+        return value in self.choices
+    
\ No newline at end of file

Modified: grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/join.txt
===================================================================
--- grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/join.txt	2008-01-13 13:59:50 UTC (rev 82838)
+++ grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/join.txt	2008-01-13 14:11:28 UTC (rev 82839)
@@ -20,8 +20,8 @@
     >>> browser.getLink('join').click()
     >>> browser.getControl(name='form.login').value = 'naoh'
     >>> browser.getControl(name='form.password').value = 'atra'
-    >>> browser.getControl(name='form.name').value = 'Naoh'
-    >>> browser.getControl(name='form.email').value = 'naoh at gnufix.de'
+    >>> browser.getControl(name='form.title').value = 'Naoh'
+    >>> browser.getControl(name='form.description').value = 'naoh at gnufix.de'
     >>> browser.getControl('Save').click()
     
 This redirects to the login form again. The login name is filled in, so we

Modified: grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/member.txt
===================================================================
--- grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/member.txt	2008-01-13 13:59:50 UTC (rev 82838)
+++ grokapps/LoginDemo/branches/PlainLoginDemo/src/logindemo/ftests/member.txt	2008-01-13 14:11:28 UTC (rev 82839)
@@ -21,26 +21,11 @@
     password 5869cb11a7cb62e0e49aa081ea73f2e39e3df168
     login ip-login
     
-Now we turn it into an IUser, to set and get the an e-mail field::
-
-    >>> from logindemo.interfaces import UserDataAdapter
-    >>> from logindemo.interfaces import IUser
-    >>> from zope.component import provideAdapter
-    >>> provideAdapter(UserDataAdapter)
-    >>> user = IUser(ip)
-    >>> user.email = 'user at domain.com'
-    >>> for f in IUser:
-    ...     print f, getattr(user,f)
-    login ip-login
-    password 5869cb11a7cb62e0e49aa081ea73f2e39e3df168
-    name ip-title
-    email user at domain.com    
-
 One day we may allow a user to choose his PasswordManager. We'll do that as soon
-as we discover how to display a Choices field in a form. Meanwhile, we know
-we'll need a list of available options, so here is how we generate one::
+as we discover the simplest way to display a Choices field in a form. Meanwhile,
+we know we'll need a list of available options, so here is how we generate one::
 
-    >>> from logindemo.interfaces import PasswordManagerChoices
+    >>> from logindemo.app import PasswordManagerChoices
     >>> choices = PasswordManagerChoices()
     >>> len(choices)
     3



More information about the Checkins mailing list