[Zope3-Users] Formlib and invariants

Darryl Cousins darryl at darrylcousins.net.nz
Wed Jul 19 16:43:36 EDT 2006


Hi Florian,

Yup. Thanks for that, much more elegant and passing in an error string
displays nicely with error_views.

Cheers,
Darryl

On Wed, 2006-07-19 at 22:18 +0200, Florian Lindner wrote:
> Am Mittwoch, 19. Juli 2006 03:25 schrieb Darryl Cousins:
> > Hi All,
> >
> > I've had a bit of a struggle getting formlib error views to play nicely
> > with invariants. That is the problem I have found to trouble me is in
> > the zope.formlib.form.FormBase method error_views.
> >
> > When I use the schema:
> >
> > class IMemberRegisterForm(IMemberData, IMemberDetails):
> >     """Schema for a member register form."""
> >
> >     new_password = Password(
> >         title=_("Choose a Password"),
> >         required=True)
> >
> >     verify_password = Password(
> >         title=_("Verify Password"),
> >         required=True)
> >
> >     @invariant
> >     def passwordsMatch(register):
> >         if register.new_password != register.verify_password:
> >             msg = _("Entered passwords do not match")
> >             error = ('verify_password', _("Passwords"), msg)
> >             raise Invalid(error)
> 
> [...]
> 
> I am not sure if I've understood you correctly, but I've solved the same 
> problem (raise error if passwords are not equal) this way:
> 
> 
> class PasswordsAreNotEqual(ValidationError):
>     """The passwords are not equal."""
>     interface.implements(IWidgetInputError)
> 
> class IRegistrationForm(interface.Interface):
>     """For entering the data for registration."""
> 
>     password = Password(title=u"Password",
>                     description=u"Your password.",
>                     required=True)
>      
>     password2 = Password(title=u"Verify Password",
>                     required=True)
>                                         
>     @interface.invariant
>     def arePasswordsEqual(obj):
>         if obj.password != obj.password2:
>             raise PasswordsAreNotEqual
> 
> 
> Hope this helps,
> 
> Florian



More information about the Zope3-users mailing list