"""
Author: Michel Peltriaux
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
Contact: michel.peltriaux@sgdnord.rlp.de
Created on: 12.01.22

"""
import django_filters

from konova.filters.mixins.file_number import FileNumberTableFilterMixin
from konova.filters.mixins.geo_reference import GeoReferencedTableFilterMixin
from konova.filters.mixins.keyword import KeywordTableFilterMixin
from konova.filters.mixins.office import ConservationOfficeTableFilterMixin, RegistrationOfficeTableFilterMixin
from konova.filters.mixins.record import RecordableTableFilterMixin
from konova.filters.mixins.self_created import SelfCreatedTableFilterMixin
from konova.filters.mixins.share import ShareableTableFilterMixin
from konova.filters.mixins.user_log import UserLoggedTableFilterMixin


class AbstractTableFilter(django_filters.FilterSet):
    """ Base TableFilter for all models

    """
    selection_filter = None
    query_filter = None
    checkbox_filter = None
    qs = None
    user = None

    class Meta:
        abstract = True


class SelectionTableFilter(RegistrationOfficeTableFilterMixin,
                           ConservationOfficeTableFilterMixin):
    """ TableFilter holding different filter options for selection related filtering

    """
    pass


class QueryTableFilter(KeywordTableFilterMixin,
                       FileNumberTableFilterMixin,
                       GeoReferencedTableFilterMixin,
                       UserLoggedTableFilterMixin):
    """ TableFilter holding different filter options for query related filtering

    """
    pass


class CheckboxTableFilter(ShareableTableFilterMixin,
                          RecordableTableFilterMixin,
                          SelfCreatedTableFilterMixin):
    """ TableFilter holding different filter options for checkbox related filtering

    """
    pass
