storage: add Not criteria (#6108)
This commit is contained in:
parent
d9b0f3ba33
commit
29d36a7214
|
@ -242,9 +242,11 @@ def test_select():
|
|||
assert len(Foobar.select([st.Less('unique_value', 26)])) == 25
|
||||
assert len(Foobar.select([st.Less('unique_value', 25), st.GreaterOrEqual('unique_value', 10)])) == 15
|
||||
assert len(Foobar.select([st.NotEqual('unique_value', 25)])) == 49
|
||||
assert len(Foobar.select([st.Not(st.Equal('unique_value', 25))])) == 49
|
||||
assert len(Foobar.select([st.Contains('unique_value', [24, 25, 26])])) == 3
|
||||
assert len(Foobar.select([st.Contains('unique_value', [24, 25, 86])])) == 2
|
||||
assert len(Foobar.select([st.NotContains('unique_value', [24, 25, 86])])) == 48
|
||||
assert len(Foobar.select([st.Not(st.Contains('unique_value', [24, 25, 86]))])) == 48
|
||||
|
||||
|
||||
def test_select_order_by():
|
||||
|
@ -366,6 +368,7 @@ def test_select_criteria_null():
|
|||
|
||||
assert len(Foobar.select([st.Null('value')])) == 33
|
||||
assert len(Foobar.select([st.NotNull('value')])) == 17
|
||||
assert len(Foobar.select([st.Not(st.Null('value'))])) == 17
|
||||
|
||||
|
||||
def test_select_criteria_ilike():
|
||||
|
|
|
@ -216,6 +216,23 @@ class Intersects(Criteria):
|
|||
return func
|
||||
|
||||
|
||||
class Not(Criteria):
|
||||
def __init__(self, criteria, **kwargs):
|
||||
self.criteria = criteria
|
||||
|
||||
def build_lambda(self):
|
||||
func = lambda x: False
|
||||
|
||||
def combine_callables(x1, x2):
|
||||
return lambda x: not x2(x)
|
||||
|
||||
func = combine_callables(func, self.criteria.build_lambda())
|
||||
return func
|
||||
|
||||
def __repr__(self):
|
||||
return '<%s (%r)>' % (self.__class__.__name__, self.criteria)
|
||||
|
||||
|
||||
class Or(Criteria):
|
||||
def __init__(self, criterias, **kwargs):
|
||||
self.criterias = criterias
|
||||
|
|
Loading…
Reference in New Issue