Hi jkral,

http://web2py.com/book/default/chapter/07#Validators
under IS_IN_SET and Tagging
"Note that when multiple=True, IS_IN_SET will accept zero or more
values, i.e. it will accept the field when nothing has been selected."

so you have to check for an empty selection and error out.

Example:

def multiempty():

  colors = ( (0, 'red'), (1, 'green'), (2, 'blue') )

  def musthavecolor(form):
    if not form.vars.color:
      form.errors.color = 'can not be empty'

  form = SQLFORM.factory(
    Field('color',
           widget=SQLFORM.widgets.checkboxes.widget,
           requires = IS_IN_SET(colors, multiple=True) )
  )

  return dict(form = form.process(
    onvalidation = musthavecolor,
    message_onsuccess = 'ok',
    message_onfailure = 'not ok'))


On Sep 29, 2:11 pm, jkral <jk...@gogoair.com> wrote:
> I am having some troubles getting my form to error when no items are
> selected in the environment field.
> Could someone please shed some insight?  and I apologize in advance if
> this request is redundant.
>
> from <specific module> import ENVIRONMENTS
> ##ENVIRONMENTS is a tuple
>
> db.define_table('info',
>   Field('info_number', 'integer', label='Info Number'),
>   Field('description', 'text'),
>   Field('environment', widget=SQLFORM.widgets.checkboxes.widget),
>   Field('notice'))
>
> db.info.environment.requires = IS_IN_SET(ENVIRONMENTS, multiple=True,
> error_message='Please select appropriate environment(s).')
>
> The other fields error (if empty) based on their respective validators
> this is what I want for the environment field, but it returns an empty
> []
>
> Also please note that I did receive an error_message before I added
> multiple=True.
>
> I have tried:
>
> db.info.environment.requires = [IS_NOT_EMPTY(),
> IS_IN_SET(ENVIRONMENTS, multiple=True, error_message='Please select
> appropriate environment(s).')]
>
> but no avail

Reply via email to