FW: [Zope3-Users] Generating loginForm with formlib

Tom Dossis td at yoma.com.au
Thu Apr 20 17:50:00 EDT 2006


>> I want to generate a login form for the PAU session credentials plugin. The
>> plugin expects a form that have a login and a password field.
>>
>> I've created a interface:
>>
>> class ILoginForm(Interface):
>>     """For generating the login form."""
>>
>>     login = TextLine(title=u"Username",
>>                     required=True)
>>
>>     password = Password(title=u"Password",
>>                     required=True)
>>
>> but formlib generates the two fields with name="form.login" therefore the
>> session credentials plugin is able to extract the credentials.
>>
>> How can I use formlib to generate a login form?
>>
>> Thanks,
>>
>> Florian
> 
> Hi Florian,
> the simplest thing to do (or what i ended up doing) was creating a
> credentialsPlugin that provided similar functionality to the standard
> session credentials plugin, but where the standard session credentials
> plugin's extractCredentials method expects to pull 'login' and
> 'password' out of request.get(), you just pull
> request.get('form.login') or something similar.  just return the
> credentials dict back out to the principal folder (or whatever
> authenticator you're using) authenticateCredentials method with a dict
> of the form {'login': credentials.getLogin(), 'password':
> credentials.getPassword() } where credentials is a SessionCredentials
> object created from your request.get('form.login') and
> request.get('form.password').
> 
> look at zope.app.authentication.session's design pattern for more.

I reckon the following *should* work, but it doesn't:

   from zope.formlib import form

   class MyLoginForm(form.Form):
     prefix=''
     form_fields=form.Fields(ILoginForm)
     ...

The problem is the generated form names are '.login' and '.password'.

IMHO if there's no form/widget prefix, I can't see why there should be a 
leading '.' character.

In the end I patched zope.app.form.Widget.setPrefix() to do what I expected.

-Tom


More information about the Zope3-users mailing list