[Zope-dev] z3c.form - extraction from sequence widget

Hermann Himmelbauer dusty at qwer.tk
Fri Aug 29 06:55:34 EDT 2008


Am Donnerstag 28 August 2008 23:55:24 schrieb Martin Aspeli:
> Hermann Himmelbauer wrote:
> > Am Donnerstag 28 August 2008 02:35:28 schrieb Marius Gedminas:
> >> On Wed, Aug 27, 2008 at 05:15:48PM -0700, Stephan Richter wrote:
> >>> On Wednesday 27 August 2008, Martin Aspeli wrote:
> >>>> This means that if the request contains the empty-marker only (no
> >>>> selection was made) for a checkbox widget (say), then the return value
> >>>> is [], rather than default (NOVALUE).
> >>>>
> >>>> Is that a bug? I have a custom checkbox widget derived from the
> >>>> standard checkbox widget, (z3c.formwidget.query, in fact), and I never
> >>>> get any "required missing" exceptions, even when I untick all the
> >>>> checkboxes and click OK.
> >>>>
> >>>> Am I missing something?
> >>>
> >>> I think you have a point. Have you tried changing the behavior to
> >>> return "default" and see what tests fail? If no major failures come out
> >>> of this, I would say change it.
> >>
> >> Wait a second, maybe I'm misunderstanding this, but I certainly oppose
> >> any change that would make an unchecked checkbox an error during form
> >> validation.
> >>
> >> A required Bool field can have two values: True or False.  One is
> >> represented by a checked checkbox, the other by an unchecked checkbox.
> >> An unchecked checkbox is not missing input and should not trigger
> >> "required missing" errors.
> >
> > I see this the same way - in my application I have a similar case (Accept
> > some policy by a checkbox-click). I solved this simply by checking the
> > value in the action handler and raising a WidgetExecutionError if it is
> > unchecked.
>
> The notion of a "required" boolean field is a bit weird anyway.
>
> I think you *could* interpret it so that a boolean field that's required
> really means "you have to tick this box" (e.g. an "I agree to these
> terms and conditions" type scenario).

My idea is to look at it bottom-up: Think about schemas without widgets at 
all, e.g. in a totally different non-zope/form scenario. To my mind, it's 
obvious, that required="True" means, that some sort of value has to be given 
and not, that the value has to be of a specific type (e.g. "True" for 
Boolean).

> To put it the other way - how would you have a non-required boolean
> field represented by a checkbox? You really need three states then: True
> False and None, which you can't get with a checkbox.

Well, and then there's the representation of fields by widgets. And, right, 
it's impossible to provide no value via a checkbox or a radio-box 
offering "yes/no". And, yes, this somehow obsoletes the "required" 
constraint. But isn't this perfectly normal for widgets? For instance, a 
Choice, which is represented by a drop-down widget, will also never return 
None.

Btw., it is possible to have a three-state widget for booleans, such as a 
drop-down widget, that includes "True/False/None", although it may not make 
much sense.

Best Regards,
Hermann

-- 
hermann at qwer.tk
GPG key ID: 299893C7 (on keyservers)
FP: 0124 2584 8809 EF2A DBF9  4902 64B4 D16B 2998 93C7


More information about the Zope-Dev mailing list