refactored filters for partner view

This commit is contained in:
Anatoly 2020-01-27 13:19:36 +03:00
parent b1817061db
commit e1c1662819
2 changed files with 28 additions and 7 deletions

23
apps/partner/filters.py Normal file
View File

@ -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',
)

View File

@ -1,22 +1,20 @@
from django_filters.rest_framework import DjangoFilterBackend, filters
from rest_framework import generics, permissions from rest_framework import generics, permissions
from partner import filters
from partner.models import Partner from partner.models import Partner
from partner.serializers import back as serializers from partner.serializers import back as serializers
from utils.permissions import IsEstablishmentManager from utils.permissions import IsEstablishmentManager
class PartnerLstView(generics.ListCreateAPIView): 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() queryset = Partner.objects.all()
serializer_class = serializers.BackPartnerSerializer serializer_class = serializers.BackPartnerSerializer
pagination_class = None pagination_class = None
permission_classes = [permissions.IsAdminUser | IsEstablishmentManager] permission_classes = [permissions.IsAdminUser | IsEstablishmentManager]
filter_backends = (DjangoFilterBackend,) filter_class = filters.PartnerFilterSet
filterset_fields = (
'establishment',
'type',
)
class PartnerRUDView(generics.RetrieveUpdateDestroyAPIView): class PartnerRUDView(generics.RetrieveUpdateDestroyAPIView):