# 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

@@ -19,16 +19,18 @@ from konova.models import Parcel, District
class AbstractTableFilter(django_filters.FilterSet):
""" TableFilter for Intervention model
""" Base TableFilter for all models
"""
selection_filter = None
query_filter = None
checkbox_filter = None
qs = None
user = None
class Meta:
abstract = True
def __init__(self, user: User, *args, **kwargs):
self.user = user
super().__init__(*args, **kwargs)
class KeywordTableFilterMixin(django_filters.FilterSet):
q = django_filters.Filter(
@@ -292,9 +294,10 @@ class ShareableTableFilterMixin(django_filters.FilterSet):
abstract = True
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.user = kwargs.pop("user", None)
if self.user is None:
raise AttributeError("User must be set for further filtering!")
super().__init__(*args, **kwargs)
def filter_show_all(self, queryset, name, value) -> QuerySet:
""" Filters queryset depending on value of 'show_all' setting
@@ -418,8 +421,7 @@ class ConservationOfficeTableFilterMixin(django_filters.FilterSet):
return qs
class SelectionTableFilter(AbstractTableFilter,
RegistrationOfficeTableFilterMixin,
class SelectionTableFilter(RegistrationOfficeTableFilterMixin,
ConservationOfficeTableFilterMixin):
""" TableFilter holding different filter options for selection related filtering
@@ -427,8 +429,7 @@ class SelectionTableFilter(AbstractTableFilter,
pass
class QueryTableFilter(AbstractTableFilter,
KeywordTableFilterMixin,
class QueryTableFilter(KeywordTableFilterMixin,
FileNumberTableFilterMixin,
GeoReferencedTableFilterMixin):
""" TableFilter holding different filter options for query related filtering
@@ -437,7 +438,7 @@ class QueryTableFilter(AbstractTableFilter,
pass
class CheckboxTableFilter(AbstractTableFilter, ShareableTableFilterMixin, RecordableTableFilterMixin):
class CheckboxTableFilter(ShareableTableFilterMixin, RecordableTableFilterMixin):
""" TableFilter holding different filter options for checkbox related filtering
"""

View File

@@ -404,6 +404,7 @@ class AutocompleteTestCase(BaseViewTestCase):
cls.atcmplt_code_comp_process = reverse("codes-process-type-autocomplete")
cls.atcmplt_code_comp_reg_off = reverse("codes-registration-office-autocomplete")
cls.atcmplt_code_comp_cons_off = reverse("codes-conservation-office-autocomplete")
cls.atcmplt_code_share_user = reverse("share-user-autocomplete")
def _test_views_anonymous_user(self):
# ATTENTION: As of the current state of django-autocomplete-light, there is no way to check on authenticated
@@ -421,6 +422,7 @@ class AutocompleteTestCase(BaseViewTestCase):
self.atcmplt_code_comp_process,
self.atcmplt_code_comp_reg_off,
self.atcmplt_code_comp_cons_off,
self.atcmplt_code_share_user,
]
self.assert_url_fail(client, urls)