paperless-ngx/src/documents/filters.py

77 lines
1.8 KiB
Python
Raw Normal View History

2018-10-07 16:28:53 +01:00
from django_filters.rest_framework import BooleanFilter, FilterSet
2016-03-09 01:05:46 +00:00
2018-09-05 15:25:14 +02:00
from .models import Correspondent, Document, Tag, DocumentType
2016-03-09 01:05:46 +00:00
2018-09-23 15:38:31 +01:00
CHAR_KWARGS = (
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
)
class CorrespondentFilterSet(FilterSet):
2016-03-09 01:05:46 +00:00
2018-09-02 21:26:06 +01:00
class Meta:
2016-03-09 01:05:46 +00:00
model = Correspondent
fields = {
"name": [
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
],
"slug": ["istartswith", "iendswith", "icontains"]
}
2016-03-09 01:05:46 +00:00
class TagFilterSet(FilterSet):
2016-03-09 01:05:46 +00:00
2018-09-02 21:26:06 +01:00
class Meta:
2016-03-09 01:05:46 +00:00
model = Tag
fields = {
"name": [
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
],
"slug": ["istartswith", "iendswith", "icontains"]
}
2018-09-05 15:25:14 +02:00
class DocumentTypeFilterSet(FilterSet):
class Meta(object):
model = DocumentType
fields = {
"name": [
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
],
"slug": ["istartswith", "iendswith", "icontains"]
}
class DocumentFilterSet(FilterSet):
2018-09-23 15:38:31 +01:00
tags_empty = BooleanFilter(
label="Is tagged",
field_name="tags",
lookup_expr="isnull",
exclude=True
)
2018-09-02 21:26:06 +01:00
class Meta:
model = Document
fields = {
2018-09-23 15:38:31 +01:00
"title": CHAR_KWARGS,
"content": ("contains", "icontains"),
"correspondent__name": CHAR_KWARGS,
"correspondent__slug": CHAR_KWARGS,
"tags__name": CHAR_KWARGS,
"tags__slug": CHAR_KWARGS,
"document_type__name": CHAR_KWARGS,
"document_type__slug": CHAR_KWARGS,
}