It seems like IS_NOT_EMPTY() should be made to work in this case (i.e., validation should fail if no items were selected).
Anthony On Friday, September 30, 2011 1:23:35 PM UTC-4, jkral wrote: > > Thanks DenesL, and yes I knew that multiple=True accepted 0 or more, > I just wasn't sure if there was another validator that I could use in > conjunction with IS_IN_SET(multiple=True) > So then I have to create my own check, there's not "quick fix"? > > Thanks > > Jon > ;) > > > On Sep 30, 8:09 am, DenesL <dene...@yahoo.ca> wrote: > > 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