# 61 Filter code enhancement

* reorganizes code
This commit is contained in:
2022-01-12 09:23:22 +01:00
parent 0cb65ae720
commit 59a541397e
4 changed files with 34 additions and 42 deletions

View File

@@ -10,7 +10,7 @@ from django.utils.translation import gettext_lazy as _
from django import forms
from django.db.models import QuerySet, Q
from konova.filters import QueryTableFilter, CheckboxTableFilter, SelectionTableFilter
from konova.filters import QueryTableFilter, CheckboxTableFilter, SelectionTableFilter, AbstractTableFilter
class SelectionCompensationTableFilter(SelectionTableFilter):
@@ -82,30 +82,26 @@ class CheckboxCompensationTableFilter(CheckboxTableFilter):
return queryset
class CompensationTableFilter:
class CompensationTableFilter(AbstractTableFilter):
""" TableFilter for compensations
Based widely on InterventionTableFilter.
Just some minor changes for Compensation model.
"""
selection_filter = None
query_filter = None
checkbox_filter = None
qs = None
def __init__(self, user=None, *args, **kwargs):
super().__init__(*args, **kwargs)
def __init__(self, *args, **kwargs):
user = kwargs.get("user", None)
self.user = user
qs = kwargs.get("queryset", None)
request_data = kwargs.get("data", None)
# Overwrite all filters for special needs of compensations
self.selection_filter = SelectionCompensationTableFilter(
user=user,
data=request_data,
queryset=qs,
)
self.query_filter = QueryCompensationTableFilter(
user=user,
data=request_data,
queryset=self.selection_filter.qs,
)
@@ -114,6 +110,7 @@ class CompensationTableFilter:
data=request_data,
queryset=self.query_filter.qs,
)
# Overwrite final queryset as well
self.qs = self.checkbox_filter.qs
@@ -166,27 +163,22 @@ class CheckboxEcoAccountTableFilter(CheckboxTableFilter):
return queryset
class EcoAccountTableFilter:
class EcoAccountTableFilter(AbstractTableFilter):
""" TableFilter for eco accounts
"""
selection_filter = None
query_filter = None
checkbox_filter = None
qs = None
def __init__(self, *args, **kwargs):
user = kwargs.get("user", None)
def __init__(self, user=None, *args, **kwargs):
super().__init__(*args, **kwargs)
self.user = user
qs = kwargs.get("queryset", None)
request_data = kwargs.get("data", None)
# Pipe the queryset through all needed filters
self.selection_filter = SelectionTableFilter(
user=user,
data=request_data,
queryset=qs,
)
self.query_filter = QueryTableFilter(
user=user,
data=request_data,
queryset=self.selection_filter.qs,
)
@@ -195,4 +187,5 @@ class EcoAccountTableFilter:
data=request_data,
queryset=self.query_filter.qs,
)
# Overwrite the final queryset result
self.qs = self.checkbox_filter.qs