mirror of
https://github.com/ansible/awx.git
synced 2026-02-26 23:46:05 -03:30
Merge pull request #2152 from YunfanZhang42/host_filter_case_insensitive
Make search in Smart Filter case insensitive.
This commit is contained in:
@@ -47,3 +47,6 @@ def test_q1(inventory_structure, get, user):
|
|||||||
query = '(name="host1" and groups__name="g1") or (name="host3" and groups__name="g2")'
|
query = '(name="host1" and groups__name="g1") or (name="host3" and groups__name="g2")'
|
||||||
evaluate_query(query, [hosts[0], hosts[2]])
|
evaluate_query(query, [hosts[0], hosts[2]])
|
||||||
|
|
||||||
|
# The following test verifies if the search in host_filter is case insensitive.
|
||||||
|
query = 'search="HOST1"'
|
||||||
|
evaluate_query(query, [hosts[0]])
|
||||||
|
|||||||
@@ -155,16 +155,16 @@ class TestSmartFilterQueryFromString():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("filter_string,q_expected", [
|
@pytest.mark.parametrize("filter_string,q_expected", [
|
||||||
('search=foo', Q(Q(**{u"name__contains": u"foo"}) | Q(**{ u"description__contains": u"foo"}))),
|
('search=foo', Q(Q(**{u"name__icontains": u"foo"}) | Q(**{ u"description__icontains": u"foo"}))),
|
||||||
('group__search=foo', Q(Q(**{u"group__name__contains": u"foo"}) | Q(**{u"group__description__contains": u"foo"}))),
|
('group__search=foo', Q(Q(**{u"group__name__icontains": u"foo"}) | Q(**{u"group__description__icontains": u"foo"}))),
|
||||||
('search=foo and group__search=foo', Q(
|
('search=foo and group__search=foo', Q(
|
||||||
Q(**{u"name__contains": u"foo"}) | Q(**{ u"description__contains": u"foo"}),
|
Q(**{u"name__icontains": u"foo"}) | Q(**{ u"description__icontains": u"foo"}),
|
||||||
Q(**{u"group__name__contains": u"foo"}) | Q(**{u"group__description__contains": u"foo"}))),
|
Q(**{u"group__name__icontains": u"foo"}) | Q(**{u"group__description__icontains": u"foo"}))),
|
||||||
('search=foo or ansible_facts__a=null',
|
('search=foo or ansible_facts__a=null',
|
||||||
Q(Q(**{u"name__contains": u"foo"}) | Q(**{u"description__contains": u"foo"})) |
|
Q(Q(**{u"name__icontains": u"foo"}) | Q(**{u"description__icontains": u"foo"})) |
|
||||||
Q(**{u"ansible_facts__contains": {u"a": None}})),
|
Q(**{u"ansible_facts__contains": {u"a": None}})),
|
||||||
('search=foo or ansible_facts__a="null"',
|
('search=foo or ansible_facts__a="null"',
|
||||||
Q(Q(**{u"name__contains": u"foo"}) | Q(**{u"description__contains": u"foo"})) |
|
Q(Q(**{u"name__icontains": u"foo"}) | Q(**{u"description__icontains": u"foo"})) |
|
||||||
Q(**{u"ansible_facts__contains": {u"a": u"\"null\""}})),
|
Q(**{u"ansible_facts__contains": {u"a": u"\"null\""}})),
|
||||||
])
|
])
|
||||||
def test_search_related_fields(self, mock_get_host_model, filter_string, q_expected):
|
def test_search_related_fields(self, mock_get_host_model, filter_string, q_expected):
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ class SmartFilter(object):
|
|||||||
search_kwargs = self._expand_search(k, v)
|
search_kwargs = self._expand_search(k, v)
|
||||||
if search_kwargs:
|
if search_kwargs:
|
||||||
kwargs.update(search_kwargs)
|
kwargs.update(search_kwargs)
|
||||||
q = reduce(lambda x, y: x | y, [models.Q(**{u'%s__contains' % _k:_v}) for _k, _v in kwargs.items()])
|
q = reduce(lambda x, y: x | y, [models.Q(**{u'%s__icontains' % _k:_v}) for _k, _v in kwargs.items()])
|
||||||
self.result = Host.objects.filter(q)
|
self.result = Host.objects.filter(q)
|
||||||
else:
|
else:
|
||||||
kwargs[k] = v
|
kwargs[k] = v
|
||||||
|
|||||||
Reference in New Issue
Block a user