On Jan 26, 11:40 am, Wayne Witzel <[email protected]> wrote:
> On Jan 26, 5:33 am, eleith <[email protected]> wrote:
>
>
>
> > for my schema, i want to handle
> > ----------------------------------------
> > delete?id=100
> > delete?id=100&id=101&id=102
>
> > and throw an error for
>
> > delete?
> > -----------------------------------------
> > my validators look like this:
>
> > id = ForEach(Int(), not_empty=True, convert_to_list=True)
>
> > however, this passes when even when i don't pass in an 'id'
>
> > i've even tried
>
> > All(NotEmpty(), ForEach(....))
>
> > that doesn't work either. i've ended up writing my own function and
> > subclassing into SimpleFormValidator to handle this case for me (i
> > just check if the len(values['id']) < 1, and return an error message)
>
> > so either i'm going about this the wrong way, or there is an error in
> > ForEach and/or All.
>
> > any suggestions? (although, i'm happy with my solution, just thought i
> > would publish my findings)
>
> I've had similar issues in the past that I dealt with like this, not
> sure if this is what you're looking for or not.
>
> import formencode as fe
>
> class IdValidator(fe.FancyValidator):
>     def _to_python(self, value, state):
>         ret = {'id':[]}
>
>         for v in value:
>             try:
>                 ret['id'].append(int(v))
>             except (ValueError, TypeError):
>                 raise fe.Invalid('id must be integer',
>                               value, state)
>         return ret
>
> class InputFormSchema(fe.Schema):
>     allow_extra_fields = True
>     filter_extra_fields = True
>
>     id = IdValidator()

Oops, ignore the dict, it will already return it to one since you have
under a Schema.

class IdValidator(formencode.FancyValidator):
    def _to_python(self, value, state):
        ret = []
        for v in value:
            try:
                ret.append(int(v))
            except (ValueError, TypeError):
                raise formencode.Invalid('id must be an integer',
value, state)
        return ret
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" 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/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to