Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
|
120442206b |
|
@ -515,8 +515,13 @@ class TagsFilter(FilterBackend):
|
||||||
def _prepare_filter_query(self, query):
|
def _prepare_filter_query(self, query):
|
||||||
return Q(tags__contains=query)
|
return Q(tags__contains=query)
|
||||||
|
|
||||||
def _prepare_exclude_query(self, query):
|
def _prepare_exclude_query(self, tags):
|
||||||
return ~Q(tags__contains=query)
|
queries = [Q(tags__contains=[tag]) for tag in tags]
|
||||||
|
query = queries.pop()
|
||||||
|
for item in queries:
|
||||||
|
query |= item
|
||||||
|
|
||||||
|
return ~Q(query)
|
||||||
|
|
||||||
def filter_queryset(self, request, queryset, view):
|
def filter_queryset(self, request, queryset, view):
|
||||||
operations = {
|
operations = {
|
||||||
|
|
|
@ -476,6 +476,18 @@ def test_api_filters(client, filter_name, collection, expected, exclude_expected
|
||||||
assert len(response.data) == exclude_expected
|
assert len(response.data) == exclude_expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_mulitple_exclude_filter_tags(client):
|
||||||
|
data = create_filter_issues_context()
|
||||||
|
project = data["project"]
|
||||||
|
client.login(data["users"][0])
|
||||||
|
tags = data["tags"]
|
||||||
|
|
||||||
|
url = "{}?project={}&exclude_tags={},{}".format(reverse('issues-list'), project.id, tags[1], tags[2])
|
||||||
|
response = client.get(url)
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert len(response.data) == 4
|
||||||
|
|
||||||
|
|
||||||
def test_api_filters_data(client):
|
def test_api_filters_data(client):
|
||||||
data = create_filter_issues_context()
|
data = create_filter_issues_context()
|
||||||
project = data["project"]
|
project = data["project"]
|
||||||
|
|
Loading…
Reference in New Issue