From 893dcd9f2893d10093212e384e9c9abd24f407eb Mon Sep 17 00:00:00 2001 From: Michael Shamoon <4887959+nikonratm@users.noreply.github.com> Date: Wed, 20 Jan 2021 18:35:03 -0800 Subject: [PATCH] Update API filters for "any" tag_id --- src/documents/filters.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/documents/filters.py b/src/documents/filters.py index 2201298f3..5a58c2f18 100755 --- a/src/documents/filters.py +++ b/src/documents/filters.py @@ -37,9 +37,10 @@ class DocumentTypeFilterSet(FilterSet): class TagsFilter(Filter): - def __init__(self, exclude=False): + def __init__(self, exclude=False, in_list=False): super(TagsFilter, self).__init__() self.exclude = exclude + self.in_list = in_list def filter(self, qs, value): if not value: @@ -50,11 +51,14 @@ class TagsFilter(Filter): except ValueError: return qs - for tag_id in tag_ids: - if self.exclude: - qs = qs.exclude(tags__id=tag_id) - else: - qs = qs.filter(tags__id=tag_id) + if self.in_list: + qs = qs.filter(tags__id__in=tag_ids).distinct() + else: + for tag_id in tag_ids: + if self.exclude: + qs = qs.exclude(tags__id=tag_id) + else: + qs = qs.filter(tags__id=tag_id) return qs @@ -83,6 +87,8 @@ class DocumentFilterSet(FilterSet): tags__id__none = TagsFilter(exclude=True) + tags__id__in = TagsFilter(in_list=True) + is_in_inbox = InboxFilter() class Meta: