Add "equal to any of" verb for string-type grid filters
This commit is contained in:
parent
01af73502a
commit
ad311e9e7e
|
@ -331,6 +331,38 @@ class AlchemyGridFilter(GridFilter):
|
||||||
self.column != self.encode_value(value),
|
self.column != self.encode_value(value),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
def filter_equal_any_of(self, query, value):
|
||||||
|
"""
|
||||||
|
This filter expects "multiple values" separated by newline
|
||||||
|
character, and will add an "OR" condition with each value
|
||||||
|
being checked separately. For instance if the user submits a
|
||||||
|
"value" like this:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
foo bar
|
||||||
|
baz
|
||||||
|
|
||||||
|
This will result in SQL condition like this:
|
||||||
|
|
||||||
|
.. code-block:: sql
|
||||||
|
|
||||||
|
name = 'foo bar' OR name = 'baz'
|
||||||
|
"""
|
||||||
|
if not value:
|
||||||
|
return query
|
||||||
|
|
||||||
|
values = value.split('\n')
|
||||||
|
values = [value for value in values if value]
|
||||||
|
if not values:
|
||||||
|
return query
|
||||||
|
|
||||||
|
conditions = []
|
||||||
|
for value in values:
|
||||||
|
conditions.append(self.column == self.encode_value(value))
|
||||||
|
|
||||||
|
return query.filter(sa.or_(*conditions))
|
||||||
|
|
||||||
def filter_is_null(self, query, value):
|
def filter_is_null(self, query, value):
|
||||||
"""
|
"""
|
||||||
Filter data with an 'IS NULL' query. Note that this filter does not
|
Filter data with an 'IS NULL' query. Note that this filter does not
|
||||||
|
@ -430,7 +462,7 @@ class AlchemyStringFilter(AlchemyGridFilter):
|
||||||
"""
|
"""
|
||||||
return ['contains', 'does_not_contain',
|
return ['contains', 'does_not_contain',
|
||||||
'contains_any_of',
|
'contains_any_of',
|
||||||
'equal', 'not_equal',
|
'equal', 'not_equal', 'equal_any_of',
|
||||||
'is_empty', 'is_not_empty',
|
'is_empty', 'is_not_empty',
|
||||||
'is_null', 'is_not_null',
|
'is_null', 'is_not_null',
|
||||||
'is_empty_or_null',
|
'is_empty_or_null',
|
||||||
|
|
Loading…
Reference in a new issue