Good point ! My example was not so good. But anyway I have another specific validator to add...
-Mathieu On Fri, Jun 4, 2010 at 06:42, Iceberg <iceb...@21cn.com> wrote: > Maybe your patch is ok. But wouldn't it be not necessary to use > requires=[IS_IN_SET(...), IS_NOT_EMPTY()]? Because you must already > mention all the allowed values in the IS_IN_SET() and usually empty > value in not inside. > > On Jun4, 1:36am, Mathieu Clabaut <mathieu.clab...@gmail.com> wrote: > > Hello, > > > > Is there any interest in this problem ? Is there any chance a correction > may > > be integrated into trunk ? > > > > -Mathieu > > > > On Thu, May 27, 2010 at 20:20, Mathieu Clabaut < > mathieu.clab...@gmail.com> > > > > > > > > > > > > wrote: > > > Reported ashttp://code.google.com/p/web2py/issues/detail?id=80 > > > > > Hello, > > > > > I've met a problem with checkboxes and rzdio widgets: > > > > > The following works: > > > Field('status', 'string', requires=IS_IN_SET(STATUS_TYPE, > multiple=True), > > > widget=SQLFORM.widgets.checkboxes.widget) > > > > > However if I add another validator, it doesn't work anymore : > > > Field('status', 'string', requires=[IS_IN_SET(STATUS_TYPE, > multiple=True), > > > IS_NOT_EMPTY()], > > > widget=SQLFORM.widgets.checkboxes.widget) > > > > > Any suggestion ? > > > > > -Mathieu > > > > On Thu, May 27, 2010 at 20:38, Mathieu Clabaut < > mathieu.clab...@gmail.com>wrote: > > > > > > > > > Patch : > > > > > diff -r 9802a87428fa gluon/sqlhtml.py > > > --- a/gluon/sqlhtml.py Wed May 26 17:17:46 2010 +0200 > > > +++ b/gluon/sqlhtml.py Thu May 27 20:37:56 2010 +0200 > > > @@ -223,10 +223,15 @@ > > > > > attr = OptionsWidget._attributes(field, {}, **attributes) > > > > > - if hasattr(field.requires, 'options'): > > > - options = field.requires.options() > > > - else: > > > - raise SyntaxError, 'widget cannot determine options of %s' > % > > > field > > > + requires = field.requires > > > + if not isinstance(requires, (list, tuple)): > > > + requires = [requires] > > > + if requires: > > > + if hasattr(requires[0], 'options'): > > > + options = requires[0].options() > > > + else: > > > + raise SyntaxError, 'widget cannot determine options of > %s' > > > \ > > > + % field > > > opts = [TR(INPUT(_type='radio', _name=field.name, > > > requires=attr.get('requires',None), > > > hideerror=True, _value=k, > > > @@ -250,10 +255,15 @@ > > > > > attr = OptionsWidget._attributes(field, {}, **attributes) > > > > > - if hasattr(field.requires, 'options'): > > > - options = field.requires.options() > > > - else: > > > - raise SyntaxError, 'widget cannot determine options of %s' > % > > > field > > > + requires = field.requires > > > + if not isinstance(requires, (list, tuple)): > > > + requires = [requires] > > > + if requires: > > > + if hasattr(requires[0], 'options'): > > > + options = requires[0].options() > > > + else: > > > + raise SyntaxError, 'widget cannot determine options of > %s' > > > \ > > > + % field > > > > > options = [(k, v) for k, v in options if k!=''] > > > opts = [] >