Accepted. Can you please email it to me? On Feb 23, 2:13 am, Iceberg <[email protected]> wrote: > Hi Massimo and Falko Krause, > > Since rev 143 (http://code.google.com/p/web2py/source/detail?r=45d5f2dab0 > ), the IS_IN_SET() accepts a new syntax: > ids = ('id1', 'id2') > labels = ('first label', 'second label') > combination = [ ids, labels ] > IS_IN_SET(combination) > > I doubt that is worthy, since you can always use the traditional > syntax: > IS_IN_SET(ids, labels) > or this is not too hard: > IS_IN_SET( combination[0], combination[1] ) > > The downside of the rev 143 is that it introduced unnecessary > complexity to the source code, and a side effect. Before rev 143, > IS_IN_SET() accepts even an iterator as its first argument, after rev > 143 it generates exception for that. > > Anyway, I post a patch here, it accepts all above syntax, and better, > it has enough doctest cases for them. > > Sincerely, > Iceberg > > diff -r ca439073317c gluon/validators.py > --- a/gluon/validators.py Fri Feb 19 19:43:22 2010 -0600 > +++ b/gluon/validators.py Tue Feb 23 16:12:14 2010 +0800 > @@ -238,6 +238,15 @@ > ('|max|john|', None) > >>> IS_IN_SET(['max', 'john'], multiple=True)(('bill', > 'john')) > (('bill', 'john'), 'value not allowed') > + >>> IS_IN_SET(('id1','id2'), ['first label','second label']) > ('id1') # Traditional way > + ('id1', None) > + >>> IS_IN_SET({'id1':'first label', 'id2':'second label'}) > ('id1') > + ('id1', None) > + >>> import itertools > + >>> IS_IN_SET(itertools.chain(['1','3','5'],['2','4','6'])) > ('1') > + ('1', None) > + >>> IS_IN_SET([('id1','id2'), ('first label','second label')]) > ('id1') # Redundant way > + ('id1', None) > """ > > def __init__( > @@ -250,12 +259,11 @@ > sort=False, > ): > self.multiple = multiple > - self.theset = [str(item) for item in theset] > if isinstance(theset, dict): > + self.theset = [str(item) for item in theset] > self.labels = theset.values() > - elif theset and (isinstance(theset[0], list) or \ > - isinstance(theset[0], tuple)) \ > - and len(theset[0])==2: > + elif theset and isinstance(theset, (tuple,list)) \ > + and isinstance(theset[0], (tuple,list)) and > len(theset[0])==2: > self.theset = [str(item) for item,label in theset] > self.labels = [str(label) for item,label in theset] > else:
-- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.

