Skip to content
This repository has been archived by the owner on Feb 19, 2021. It is now read-only.

Commit

Permalink
Fix implementation of django-filter
Browse files Browse the repository at this point in the history
  • Loading branch information
danielquinn committed Sep 23, 2018
1 parent 35c5b8e commit a511d34
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 27 deletions.
6 changes: 6 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ Changelog
declaring ``PAPERLESS_DBUSER`` in your environment. This will attempt to
connect to your Postgres database without a password unless you also set
``PAPERLESS_DBPASS``.
* A bug was found in the REST API filter system that was the result of an
update of django-filter some time ago. This has now been patched `#412`_.
Thanks to `thepill`_ for spotting it!


2.3.0
=====
Expand Down Expand Up @@ -520,6 +524,7 @@ bulk of the work on this big change.
.. _dubit0: https://github.com/dubit0
.. _ahyear: https://github.com/ahyear
.. _jonaswinkler: https://github.com/jonaswinkler
.. _thepill: https://github.com/thepill

.. _#20: https://github.com/danielquinn/paperless/issues/20
.. _#44: https://github.com/danielquinn/paperless/issues/44
Expand Down Expand Up @@ -607,6 +612,7 @@ bulk of the work on this big change.
.. _#400: https://github.com/danielquinn/paperless/pull/400
.. _#401: https://github.com/danielquinn/paperless/pull/401
.. _#405: https://github.com/danielquinn/paperless/pull/405
.. _#412: https://github.com/danielquinn/paperless/issues/412

.. _pipenv: https://docs.pipenv.org/
.. _a new home on Docker Hub: https://hub.docker.com/r/danielquinn/paperless/
50 changes: 23 additions & 27 deletions src/documents/filters.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
from django_filters.rest_framework import CharFilter, FilterSet, BooleanFilter
from django_filters.rest_framework import CharFilter, FilterSet, BooleanFilter, ModelChoiceFilter

from .models import Correspondent, Document, Tag


CHAR_KWARGS = (
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
)


class CorrespondentFilterSet(FilterSet):

class Meta:
Expand Down Expand Up @@ -31,34 +37,24 @@ class Meta:

class DocumentFilterSet(FilterSet):

CHAR_KWARGS = {
"lookup_expr": (
"startswith",
"endswith",
"contains",
"istartswith",
"iendswith",
"icontains"
)
}

correspondent__name = CharFilter(
field_name="correspondent__name", **CHAR_KWARGS)
correspondent__slug = CharFilter(
field_name="correspondent__slug", **CHAR_KWARGS)
tags__name = CharFilter(
field_name="tags__name", **CHAR_KWARGS)
tags__slug = CharFilter(
field_name="tags__slug", **CHAR_KWARGS)
tags__empty = BooleanFilter(
field_name="tags", lookup_expr="isnull", distinct=True)
tags_empty = BooleanFilter(
label="Is tagged",
field_name="tags",
lookup_expr="isnull",
exclude=True
)

class Meta:
model = Document
fields = {
"title": [
"startswith", "endswith", "contains",
"istartswith", "iendswith", "icontains"
],
"content": ["contains", "icontains"],

"title": CHAR_KWARGS,
"content": ("contains", "icontains"),

"correspondent__name": CHAR_KWARGS,
"correspondent__slug": CHAR_KWARGS,

"tags__name": CHAR_KWARGS,
"tags__slug": CHAR_KWARGS,

}

0 comments on commit a511d34

Please sign in to comment.