cd34 schrieb: > From: > > http://turbogears.org/2.0/docs/main/Validation.html > > I'm able to get validation working with widgets without too much > difficulty, but, I need to write my own validation handler along with > using the FieldsMatch chained_validator which I'm having some > difficulty with. > > models: > > class PasswordSchema(Schema): > oldpassword = String(not_empty=True) > password = String(not_empty=True) > passwordverify = String(not_empty=True) > chained_validators = [FieldsMatch > ('password','passwordverify')] > > class PasswordForm(TableForm): > action = 'passwordsave' > class fields(WidgetsList): > oldpassword = PasswordField(validator=NotEmpty) > password = PasswordField(validator=NotEmpty) > passwordverify = PasswordField(validator=NotEmpty) > > controller code: > > @expose('cp.templates.template') > def password(self, **kw): > c.form = PasswordForm() > return dict(value=dict(), template='form') > > #...@validate(PasswordForm(), error_handler=password) > @validate(PasswordSchema()) > def passwordsave(self, **kw): > if c.form_errors: > flash("There was an error") > print c.form_errors > else: > #provider.edit('clients',values=kw) > flash("Password updated") > redirect('password') > > If I use validate(PasswordForm(), error_handler=password), errors are > correctly diagnosed and output to the rendered handler, password. > Empty values display 'Please enter a value' next to each of the > fields. > > If I switch to the PasswordSchema() validation, I am able to read the > debug log and see > > {'password': 'Please enter a value', 'oldpassword': 'Please enter a > value', 'passwordverify': 'Please enter a value'} > > where it printed c.form_errors, however, I am not able to rerender the > password template. If I change my validate decorator to: > > @validate(PasswordSchema(), error_handler=password) > > TurboGears does understand there was an error, but redisplays the > password template without having displayed the error messages.
Try setting the schema as validator of the whole form, and then use the form as argument to @validate. Diez --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears Trunk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/turbogears-trunk?hl=en -~----------~----~----~----~------~----~------~--~---
