[Checkins]
SVN: Sandbox/lra/PlainWeirdLoginDemo/src/plainlogindemo/app.py
evil expermients in abusing the IInternalPrincipal schema to
have an e-mail field and "full name" instead of "title". Oh,
and setting a RadionWidget for the passwordManagerName field.
Leonardo Rochael Almeida
leo at hiper.com.br
Mon Jan 14 23:22:23 EST 2008
Log message for revision 82888:
evil expermients in abusing the IInternalPrincipal schema to have an e-mail field and "full name" instead of "title". Oh, and setting a RadionWidget for the passwordManagerName field.
Changed:
U Sandbox/lra/PlainWeirdLoginDemo/src/plainlogindemo/app.py
-=-
Modified: Sandbox/lra/PlainWeirdLoginDemo/src/plainlogindemo/app.py
===================================================================
--- Sandbox/lra/PlainWeirdLoginDemo/src/plainlogindemo/app.py 2008-01-15 04:14:53 UTC (rev 82887)
+++ Sandbox/lra/PlainWeirdLoginDemo/src/plainlogindemo/app.py 2008-01-15 04:22:22 UTC (rev 82888)
@@ -2,7 +2,9 @@
from urllib import urlencode
-from zope.interface import Interface, implements
+from zope.interface import Interface, implements, directlyProvides
+from zope.app.form.interfaces import IWidgetInputError
+from zope.schema import ASCIILine, ValidationError
from zope.component import getUtility, getUtilitiesFor
from zope.app.authentication import PluggableAuthentication
from zope.app.authentication.interfaces import IPasswordManager
@@ -12,9 +14,8 @@
from zope.app.authentication.session import SessionCredentialsPlugin
from zope.app.security.interfaces import IAuthentication
from zope.app.security.interfaces import IUnauthenticatedPrincipal
-from zope.security.management import checkPermission
from zope.app.securitypolicy.interfaces import IPrincipalPermissionManager
-from zope.schema import getFieldNamesInOrder, ValidationError
+from zope.app.form.browser import RadioWidget, TextWidget
from zope.schema.interfaces import IField, IIterableSource
from zope.i18n import MessageFactory
@@ -103,11 +104,33 @@
# redirect to the main page
self.redirect(self.application_url())
+class MySelectWidget(RadioWidget):
+
+ def __init__(self, field, request):
+ super(MySelectWidget, self).__init__(
+ field, field.vocabulary, request)
+
+class NameTextWidget(TextWidget):
+ label = u'Full Name'
+
+
+class InvalidEmail(ValidationError):
+ __doc__ = _(u"""Not an e-mail address""")
+
+class EmailField(ASCIILine):
+ def _validate(self, value):
+ if '@' not in value:
+ raise InvalidEmail(value)
+
class Join(grok.AddForm, Master):
"""
User registration form.
"""
- form_fields = grok.AutoFields(IInternalPrincipal).omit('passwordManagerName')
+ form_fields = grok.AutoFields(IInternalPrincipal)
+ form_fields['passwordManagerName'].custom_widget = MySelectWidget
+ form_fields['title'].custom_widget = NameTextWidget
+ form_fields['description'].field = EmailField(__name__='description',
+ title=u'E-Mail address')
label = _(u'User registration')
template = grok.PageTemplateFile('form.pt')
More information about the Checkins
mailing list