mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-07-28 18:24:38 -05:00
Merge pull request #10 from shamoon/feature/any-all-filtering
Feature: any / all filtering with tags
This commit is contained in:
@@ -38,9 +38,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:
|
||||
@@ -51,11 +52,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
|
||||
|
||||
@@ -94,6 +98,8 @@ class DocumentFilterSet(FilterSet):
|
||||
|
||||
tags__id__none = TagsFilter(exclude=True)
|
||||
|
||||
tags__id__in = TagsFilter(in_list=True)
|
||||
|
||||
is_in_inbox = InboxFilter()
|
||||
|
||||
title_content = TitleContentFilter()
|
||||
|
@@ -387,7 +387,8 @@ class SavedViewFilterRule(models.Model):
|
||||
(18, _("does not have ASN")),
|
||||
(19, _("title or content contains")),
|
||||
(20, _("fulltext query")),
|
||||
(21, _("more like this"))
|
||||
(21, _("more like this")),
|
||||
(22, _("has tags in"))
|
||||
]
|
||||
|
||||
saved_view = models.ForeignKey(
|
||||
|
Reference in New Issue
Block a user