def test_filterOr(self): qlObjs = QueryableListObjs(self.dataObjs) found = qlObjs.filterOr(a='six', b='five') assert len( found ) == 2, 'Expected "or" filter to return 2 items for a="6" and b="five". Got: %s\n' % ( str(found), ) assert ( (found[0].a == 'six' or found[0].b == 'five') or (found[1].a == 'six' or found[1].b == 'five') ), 'Got wrong items for a="6" and b="five". Got: %s' % (str(found), )
'colour' : 'orange', 'age' : 18, 'name' : 'Phil', 'likes' : ['puppies', 'gnomes'] }, ] # data = QueryableListDicts(data) data = QueryableListObjs(data) sys.stdout.write("Data: %s\n\n" %(data,)) sys.stdout.write('People who are over 22 years old:\n%s\n\n' %(data.filter(age__gt=22),)) # sys.stdout.write('People who like puppies or bricks, and their favourite colour is purple:\n\n' %(data.filter(likes__containsAny=('puppies', 'bricks')).filter(colour__ieq='purple'),)) sys.stdout.write('People who like puppies or bricks, and their favourite colour is purple:\n%s\n\n' %(data.filter(likes__containsAny=('puppies', 'bricks'), colour__ieq='purple'),)) sys.stdout.write('People who are at least 30 years old or like cheese:\n%s\n\n' %(data.filterOr(likes__contains='cheese', age__gte=30),)) # Create a QueryBuilder to execute a query builder = QueryBuilder() builder.addFilter("AND", age__gt=22) builder.addFilter(likes__contains='puppies') # Execute on a QueryableList sys.stdout.write('Over 22 and likes puppies (dataset1):\n%s\n\n' %(str(builder.execute(data)))) # Execute on a normal list, creating a QueryableListMixed sys.stdout.write('Over 22 and likes puppies (mixed dataset2):\n%s\n\n' %(str(builder.execute(dataset2)))) #import pdb; pdb.set_trace()