Multiple Error Messages For a Single Widget (Sequence)

Captured

None

Code (show in context)

    @view_config(renderer='templates/form.pt', name='multiple_error_messages_seq')
    @demonstrate('Multiple Error Messages For a Single Widget (Sequence)')
    def multiple_error_messages_seq(self):
        def v1(node, value):
            msg = _('Error ${num}', mapping=dict(num=1))
            raise colander.Invalid(node, msg)
        def v2(node, value):
            msg = _('Error ${num}', mapping=dict(num=2))
            raise colander.Invalid(node, msg)
        def v3(node, value):
            msg = _('Error ${num}', mapping=dict(num=3))
            raise colander.Invalid(node, msg)
        class Sequence(colander.SequenceSchema):
            field = colander.SchemaNode(
                colander.String(),
                title="Fill in a value and submit to see multiple errors",
                validator = colander.All(v1, v2, v3))
        class Schema(colander.Schema):
            fields = Sequence()
        schema = Schema()
        form = deform.Form(schema, buttons=('submit',))
        return self.render_form(form)