[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