i'm having a similar type of issue. i have the following field: Field('friends','list:integer', default=[], readable=False, writable=False),
and it generally works fine. however, when i'm in the gae appadmin and i try to modify a user's record, if the user has an empty list for friends, i get this error: BadValueError: Property friends is required what i need is for the friends list to be able to be blank. but adding an IS_EMPTY_OR(IS_INT_LIST()) doesn't help (IS_INT_LIST is a validator i'll attach below). it still errors when friends has no value. what can i do to have the list accept an empty entry in appadmin? thanks, matt the validator, just for good measure: class IS_INT_LIST(): def __init__(self, format='', error_message='must be a list!'): self.format = format self.error_message = error_message def __call__(self, value): try: return ([] if value=='[]' or value=='' else [int(x) for x in value[1:-1].replace('L','').replace(' ','').split(',')], None) except: return (value, 'You did not submit an int list.') def formatter(self, value): return value On Sep 25, 4:38 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > Should be > > Field('changed_fields', 'list:string', default=[], > requires=IS_IN_SET(['explanation', 'output'],multiple=True) > ), > > for multiple=True, IS_NOT_EMPTY is implicit and confuses web2py > > On Sep 25, 1:39 pm, Jurgis Pralgauskis <jurgis.pralgaus...@gmail.com> > wrote: > > > hello I get the same problem for list:string orlist:integeron GAE > > using version 1.85.3 > > > note: I think now, that the way I defined requires here is not needed, > > but anyway the errorreporting should handle it more fluently :) > > > if from appadmin I try to insert recrod with > > > Field('changed_fields', 'list:string', default=[], > > requires=IS_EMPTY_OR(IS_IN_SET(['explanation', 'output'], > > multiple=True)) > > ), > > > and if I dont select anything for this field, I get: > > Internal error > > Ticket issued: unknown > > > otherwise it inserts ok. > > on nonGAE it works without complaints > > > I'd expect Validation error message instead. > > > on terminal I can see: > > ERROR 2010-09-25 07:30:12,628 restricted.py:151] Traceback (most > > recent call last): > > File "/media/data/veikla/coding/web2py_gae_test/gluon/ > > restricted.py", line 188, in restricted > > exec ccode in environment > > File "/media/data/veikla/coding/web2py_gae_test/applications/ > > CodeByExample/controllers/appadmin.py:insert", line 410, in <module> > > File "/media/data/veikla/coding/web2py_gae_test/gluon/globals.py", > > line 96, in <lambda> > > self._caller = lambda f: f() > > File "/media/data/veikla/coding/web2py_gae_test/applications/ > > CodeByExample/controllers/appadmin.py:insert", line 125, in insert > > File "/media/data/veikla/coding/web2py_gae_test/gluon/sqlhtml.py", > > line 1103, in accepts > > self.vars.id = self.table.insert(**fields) > > File "/media/data/veikla/coding/web2py_gae_test/gluon/contrib/ > > gql.py", line 296, in insert > > tmp = self._tableobj(**fields) > > File "/media/data/veikla/coding/google_appengine/google/appengine/ > > ext/db/__init__.py", line 813, in __init__ > > prop.__set__(self, value) > > File "/media/data/veikla/coding/google_appengine/google/appengine/ > > ext/db/__init__.py", line 542, in __set__ > > value = self.validate(value) > > File "/media/data/veikla/coding/google_appengine/google/appengine/ > > ext/db/__init__.py", line 3013, in validate > > value = super(ListProperty, self).validate(value) > > File "/media/data/veikla/coding/google_appengine/google/appengine/ > > ext/db/__init__.py", line 569, in validate > > raise BadValueError('Property %s is required' % self.name) > > BadValueError: Property changed_fields is required > > > --- > > ps.: later I thought that IS_EMPTY_OR is no use here -- if list is > > empty then it is empty itself :) > > but IS_EMPY allows to haveNonevalue as I suppose. > > anyway after removing this constraint and changingNoneto [], > > everything seems to work fluently on both GAE and nonGAE. > > > by the way, when trying to import from csv with IS_EMPTY_OR, I was > > getting flash message > > "Property changed_fields is required" > > where there isNonefor this field > >