I have this form  in which I have three validators,

registrationForm = form.Form(
    form.Textbox('fName'),
    form.Textbox('lName'),
    form.Textbox('userId', form.notnull),
    form.Textbox('email', form.notnull,
                form.regexp(r"....@.*", "must be a valid email
address")),
    form.Password('password', form.notnull),
    form.Password('confirmPassword'),
    form.Textbox('captcha'),
    validators = [form.Validator("Passwords don't match.",
        lambda i: i.password == i.confirmPassword),
        form.Validator("Captcha is incorrect",
        lambda cp: cp.captcha == session.captcha)]
)

One which looks for an email (I know its very basic :)), and two more
form fields that I want to validate.

Issues at hand:
The current form always shows "Captcha is incorrect" even if the
passwords are incorrect and the captcha is correct.

Similarly if the email is incorrect and all else is good it shows
"email must be valid" __and__ "captcha is incorrect"

If I take out the captcha validator then it correctly shows the error
that the passwords are incorrect.

registrationForm = form.Form(
    form.Textbox('fName'),
    form.Textbox('lName'),
    form.Textbox('userId', form.notnull),
    form.Textbox('email', form.notnull,
                form.regexp(r"....@.*", "must be a valid email
address")),
    form.Password('password', form.notnull),
    form.Password('confirmPassword'),
    form.Textbox('captcha'),
    validators = [form.Validator("Passwords don't match.",
        lambda i: i.password == i.confirmPassword),
        form.Validator("Captcha is incorrect",
        lambda cp: cp.captcha == session.captcha)]
)

If all the form fields are correct it correctly gets processed.

I check the form as below

       if not form.validates():
            for k in form.inputs:
                if k.note != None:
                    errors[k.id] = '%s %s' % (k.id, k.note.lower())
            if len(form.validators) > 0:
                for e in form.validators:
                    errors['Error'] = e.msg
            web.header('Content-Type','text/html;charset=utf-8')
            return render.register(form=form, errors=errors,
                session=session)


Any ideas

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" 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/webpy?hl=en.

Reply via email to