paperless-ngx/src/documents/filters.py

62 lines
1.7 KiB
Python
Raw Normal View History

from django_filters.rest_framework import CharFilter, FilterSet, BooleanFilter
2016-03-09 01:05:46 +00:00
from .models import Correspondent, Document, Tag
2016-03-09 01:05:46 +00:00
class CorrespondentFilterSet(FilterSet):
2016-03-09 01:05:46 +00:00
class Meta(object):
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
class Meta(object):
model = Tag
fields = {
"name": [
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
],
"slug": ["istartswith", "iendswith", "icontains"]
}
class DocumentFilterSet(FilterSet):
CHAR_KWARGS = {
"lookup_expr": (
"startswith",
"endswith",
"contains",
"istartswith",
"iendswith",
"icontains"
)
}
correspondent__name = CharFilter(name="correspondent__name", **CHAR_KWARGS)
correspondent__slug = CharFilter(name="correspondent__slug", **CHAR_KWARGS)
tags__name = CharFilter(name="tags__name", **CHAR_KWARGS)
tags__slug = CharFilter(name="tags__slug", **CHAR_KWARGS)
2018-08-16 21:48:45 +08:00
tags__empty = BooleanFilter(name='tags',
lookup_expr='isnull',
distinct=True)
class Meta(object):
model = Document
fields = {
"title": [
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
],
"content": ["contains", "icontains"],
}