# 61 Filter backend

* refactors table filters by introducing AbstractTableFilter, GeoReferencedTableFilterMixin, ShareableTableFilterMixin and RecordableTableFilterMixin
* adds full filter functionality
* refactors TableFilter inheritances for all objects
This commit is contained in:
2022-01-11 12:56:27 +01:00
parent 552559c118
commit 524b5c340f
6 changed files with 379 additions and 141 deletions

View File

@@ -10,10 +10,11 @@ from django.utils.translation import gettext_lazy as _
from django import forms
from django.db.models import QuerySet
from intervention.filters import InterventionTableFilter
from konova.filters import AbstractTableFilter, GeoReferencedTableFilterMixin, ShareableTableFilterMixin, \
RecordableTableFilterMixin
class CompensationTableFilter(InterventionTableFilter):
class CompensationTableFilter(AbstractTableFilter, GeoReferencedTableFilterMixin, ShareableTableFilterMixin, RecordableTableFilterMixin):
""" TableFilter for compensations
Based widely on InterventionTableFilter.
@@ -21,7 +22,7 @@ class CompensationTableFilter(InterventionTableFilter):
"""
def _filter_show_all(self, queryset, name, value) -> QuerySet:
def filter_show_all(self, queryset, name, value) -> QuerySet:
""" Filters queryset depending on value of 'show_all' setting
Args:
@@ -39,7 +40,7 @@ class CompensationTableFilter(InterventionTableFilter):
else:
return queryset
def _filter_show_recorded(self, queryset, name, value) -> QuerySet:
def filter_show_recorded(self, queryset, name, value) -> QuerySet:
""" Filters queryset depending on value of 'show_recorded' setting
Args:
@@ -58,21 +59,20 @@ class CompensationTableFilter(InterventionTableFilter):
return queryset
class EcoAccountTableFilter(InterventionTableFilter):
class EcoAccountTableFilter(AbstractTableFilter, GeoReferencedTableFilterMixin, ShareableTableFilterMixin, RecordableTableFilterMixin):
""" TableFilter for eco accounts
Based widely on InterventionTableFilter.
Just some minor changes for EcoAccount model.
"""
sr = django_filters.BooleanFilter(
method='_filter_only_show_unrecorded',
method='filter_only_show_unrecorded',
label=_("Show only unrecorded"),
label_suffix=_(""),
widget=forms.CheckboxInput()
)
def _filter_show_all(self, queryset, name, value) -> QuerySet:
def filter_show_all(self, queryset, name, value) -> QuerySet:
""" Filters queryset depending on value of 'show_all' setting
Args:
@@ -90,7 +90,7 @@ class EcoAccountTableFilter(InterventionTableFilter):
else:
return queryset
def _filter_only_show_unrecorded(self, queryset, name, value) -> QuerySet:
def filter_only_show_unrecorded(self, queryset, name, value) -> QuerySet:
""" Filters queryset depending on value of 'show_recorded' setting
Args: