diff --git a/apps/partner/filters.py b/apps/partner/filters.py new file mode 100644 index 00000000..e9b32f5f --- /dev/null +++ b/apps/partner/filters.py @@ -0,0 +1,23 @@ +"""Partner app filters.""" +from django_filters import rest_framework as filters + +from partner.models import Partner + + +class PartnerFilterSet(filters.FilterSet): + """Establishment filter set.""" + + establishment = filters.NumberFilter( + help_text='Allows to get partner list by establishment ID.') + type = filters.ChoiceFilter( + choices=Partner.MODEL_TYPES, + help_text=f'Allows to filter partner list by partner type. ' + f'Enum: {dict(Partner.MODEL_TYPES)}') + + class Meta: + """Meta class.""" + model = Partner + fields = ( + 'establishment', + 'type', + ) diff --git a/apps/partner/views/back.py b/apps/partner/views/back.py index 1033d0ee..7ea440f0 100644 --- a/apps/partner/views/back.py +++ b/apps/partner/views/back.py @@ -1,22 +1,20 @@ -from django_filters.rest_framework import DjangoFilterBackend, filters from rest_framework import generics, permissions +from partner import filters from partner.models import Partner from partner.serializers import back as serializers from utils.permissions import IsEstablishmentManager class PartnerLstView(generics.ListCreateAPIView): - """Partner list create view.""" + """Partner list/create view. + Allows to get partners for current country, or create a new one. + """ queryset = Partner.objects.all() serializer_class = serializers.BackPartnerSerializer pagination_class = None permission_classes = [permissions.IsAdminUser | IsEstablishmentManager] - filter_backends = (DjangoFilterBackend,) - filterset_fields = ( - 'establishment', - 'type', - ) + filter_class = filters.PartnerFilterSet class PartnerRUDView(generics.RetrieveUpdateDestroyAPIView):