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"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2017-01-01 16:31:46 +00:00
|
|
|
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
|
2017-01-01 16:31:46 +00:00
|
|
|
fields = {
|
2017-03-25 16:20:59 +00:00
|
|
|
"name": [
|
2017-01-01 16:31:46 +00:00
|
|
|
"startswith", "endswith", "contains",
|
|
|
|
|
"istartswith", "iendswith", "icontains"
|
|
|
|
|
],
|
|
|
|
|
"slug": ["istartswith", "iendswith", "icontains"]
|
|
|
|
|
}
|
2016-03-09 01:05:46 +00:00
|
|
|
|
|
|
|
|
|
2017-01-01 16:31: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
|
2017-01-01 16:31:46 +00:00
|
|
|
fields = {
|
2017-03-25 16:20:59 +00:00
|
|
|
"name": [
|
2017-01-01 16:31:46 +00:00
|
|
|
"startswith", "endswith", "contains",
|
|
|
|
|
"istartswith", "iendswith", "icontains"
|
|
|
|
|
],
|
|
|
|
|
"slug": ["istartswith", "iendswith", "icontains"]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2018-09-05 15:25:14 +02:00
|
|
|
class DocumentTypeFilterSet(FilterSet):
|
|
|
|
|
|
2018-12-11 12:26:44 +01:00
|
|
|
class Meta:
|
2018-09-05 15:25:14 +02:00
|
|
|
model = DocumentType
|
|
|
|
|
fields = {
|
|
|
|
|
"name": [
|
|
|
|
|
"startswith", "endswith", "contains",
|
|
|
|
|
"istartswith", "iendswith", "icontains"
|
|
|
|
|
],
|
|
|
|
|
"slug": ["istartswith", "iendswith", "icontains"]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2017-01-01 16:31:46 +00:00
|
|
|
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
|
|
|
|
|
)
|
2016-03-12 20:45:13 +00:00
|
|
|
|
2018-09-02 21:26:06 +01:00
|
|
|
class Meta:
|
2016-03-12 20:45:13 +00:00
|
|
|
model = Document
|
2017-01-01 16:31:46 +00:00
|
|
|
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,
|
|
|
|
|
|
2018-09-25 14:47:12 +02:00
|
|
|
"document_type__name": CHAR_KWARGS,
|
|
|
|
|
"document_type__slug": CHAR_KWARGS,
|
|
|
|
|
|
2017-01-01 16:31:46 +00:00
|
|
|
}
|