Re: ForEach and checkboxes?

Matej Barič <[email protected]> Thu, 28 Aug 2008 16:36:41 +0200
Newsgroups gmane.comp.python.formencode
Message-ID <[email protected]>
Thanks for a good idea, I'll try it out, sounds like it could work  
nicely.
regards,
matej


On 28.8.2008, at 15:43, Ian Bicking wrote:

> Matej Barič wrote:
>> Hello,
>> I use ToscaWidgets but I believe this is more of a FormEncode  
>> problem:
>> In my form schema I use myfield =  
>> FormFieldRepeater(widget=Checkbox,  repetitions=3).  
>> FormFieldRepeater uses the ForEach validator which in  my case  
>> returns [True] instead of [False, False, True] if only the  last  
>> checkbox is checked. I think the problem is already in schema.py   
>> where a method simply returns validator.if_missing value which may  
>> be  ok for normal input fields but not checkboxes. Maybe   
>> ForEach.if_missing shouldn't simply a value of [].
>> Is there any workaround for what I want?
>
> Checkboxes are tricky.  The naming trick (checkbox-1, checkbox-2,  
> etc) doesn't really work that well, as variabledecode doesn't fill  
> in empties (i.e., checkbox-2=on becomes ['on']).  That's probably  
> the problem you are having.  It works okay if you have other fields  
> repeating alongside the checkboxes (i.e., you are repeating a schema  
> that contains a checkbox and something like a text field).
>
> Outside of FormEncode I've used hidden fields to manage this, so  
> that the hidden field serves as a kind of default.  There's nothing  
> in FormEncode to really handle this, but you could handle it before  
> you pass the fields to FormEncode, like:
>
> for field_name, field_value in fields.items():
>    if field_name.endswith('.default'):
>        orig_name = field_name[:-len('.default')]
>        if orig_name not in fields:
>            fields[orig_name] = field_value
>        del fields[field_name]
>
> Then put in <input type="hidden" name="checkbox-1.default"  
> value="">. Potentially variabledecode itself could have this  
> functionality added.
>
> -- 
> Ian Bicking : [email protected] : http://blog.ianbicking.org


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
FormEncode-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/formencode-discuss