mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Fix implementation of django-filter
This commit is contained in:
		| @@ -17,6 +17,10 @@ Changelog | |||||||
|   declaring ``PAPERLESS_DBUSER`` in your environment.  This will attempt to |   declaring ``PAPERLESS_DBUSER`` in your environment.  This will attempt to | ||||||
|   connect to your Postgres database without a password unless you also set |   connect to your Postgres database without a password unless you also set | ||||||
|   ``PAPERLESS_DBPASS``. |   ``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 | 2.3.0 | ||||||
| ===== | ===== | ||||||
| @@ -520,6 +524,7 @@ bulk of the work on this big change. | |||||||
| .. _dubit0: https://github.com/dubit0 | .. _dubit0: https://github.com/dubit0 | ||||||
| .. _ahyear: https://github.com/ahyear | .. _ahyear: https://github.com/ahyear | ||||||
| .. _jonaswinkler: https://github.com/jonaswinkler | .. _jonaswinkler: https://github.com/jonaswinkler | ||||||
|  | .. _thepill: https://github.com/thepill | ||||||
|  |  | ||||||
| .. _#20: https://github.com/danielquinn/paperless/issues/20 | .. _#20: https://github.com/danielquinn/paperless/issues/20 | ||||||
| .. _#44: https://github.com/danielquinn/paperless/issues/44 | .. _#44: https://github.com/danielquinn/paperless/issues/44 | ||||||
| @@ -607,6 +612,7 @@ bulk of the work on this big change. | |||||||
| .. _#400: https://github.com/danielquinn/paperless/pull/400 | .. _#400: https://github.com/danielquinn/paperless/pull/400 | ||||||
| .. _#401: https://github.com/danielquinn/paperless/pull/401 | .. _#401: https://github.com/danielquinn/paperless/pull/401 | ||||||
| .. _#405: https://github.com/danielquinn/paperless/pull/405 | .. _#405: https://github.com/danielquinn/paperless/pull/405 | ||||||
|  | .. _#412: https://github.com/danielquinn/paperless/issues/412 | ||||||
|  |  | ||||||
| .. _pipenv: https://docs.pipenv.org/ | .. _pipenv: https://docs.pipenv.org/ | ||||||
| .. _a new home on Docker Hub: https://hub.docker.com/r/danielquinn/paperless/ | .. _a new home on Docker Hub: https://hub.docker.com/r/danielquinn/paperless/ | ||||||
|   | |||||||
| @@ -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 | from .models import Correspondent, Document, Tag | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CHAR_KWARGS = ( | ||||||
|  |     "startswith", "endswith", "contains", | ||||||
|  |     "istartswith", "iendswith", "icontains" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| class CorrespondentFilterSet(FilterSet): | class CorrespondentFilterSet(FilterSet): | ||||||
|  |  | ||||||
|     class Meta: |     class Meta: | ||||||
| @@ -31,34 +37,24 @@ class TagFilterSet(FilterSet): | |||||||
|  |  | ||||||
| class DocumentFilterSet(FilterSet): | class DocumentFilterSet(FilterSet): | ||||||
|  |  | ||||||
|     CHAR_KWARGS = { |     tags_empty = BooleanFilter( | ||||||
|         "lookup_expr": ( |         label="Is tagged", | ||||||
|             "startswith", |         field_name="tags", | ||||||
|             "endswith", |         lookup_expr="isnull", | ||||||
|             "contains", |         exclude=True | ||||||
|             "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) |  | ||||||
|  |  | ||||||
|     class Meta: |     class Meta: | ||||||
|         model = Document |         model = Document | ||||||
|         fields = { |         fields = { | ||||||
|             "title": [ |  | ||||||
|                 "startswith", "endswith", "contains", |             "title": CHAR_KWARGS, | ||||||
|                 "istartswith", "iendswith", "icontains" |             "content": ("contains", "icontains"), | ||||||
|             ], |  | ||||||
|             "content": ["contains", "icontains"], |             "correspondent__name": CHAR_KWARGS, | ||||||
|  |             "correspondent__slug": CHAR_KWARGS, | ||||||
|  |  | ||||||
|  |             "tags__name": CHAR_KWARGS, | ||||||
|  |             "tags__slug": CHAR_KWARGS, | ||||||
|  |  | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Quinn
					Daniel Quinn