# Conflicts: # apps/account/models.py # apps/collection/views/back.py # apps/comment/views/back.py # apps/establishment/models.py # apps/establishment/views/back.py # apps/news/views.py # apps/partner/views/back.py
82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
from django.shortcuts import get_object_or_404
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
from rest_framework import generics
|
|
from rest_framework.filters import OrderingFilter
|
|
|
|
from partner import filters
|
|
from partner.models import Partner, PartnerToEstablishment
|
|
from partner.serializers import back as serializers
|
|
from utils.methods import get_permission_classes
|
|
from utils.permissions import IsEstablishmentManager, IsEstablishmentAdministrator
|
|
|
|
|
|
class PartnerLstView(generics.ListCreateAPIView):
|
|
"""Partner list/create view.
|
|
Allows to get partners for current country, or create a new one.
|
|
"""
|
|
queryset = Partner.objects.with_base_related()
|
|
serializer_class = serializers.BackPartnerSerializer
|
|
pagination_class = None
|
|
permission_classes = get_permission_classes(
|
|
IsEstablishmentManager,
|
|
IsEstablishmentAdministrator
|
|
)
|
|
filter_class = filters.PartnerFilterSet
|
|
|
|
|
|
class EstablishmentPartners(generics.ListAPIView):
|
|
queryset = PartnerToEstablishment.objects.prefetch_related('partner', 'partner__country')
|
|
serializer_class = serializers.PartnersForEstablishmentSerializer
|
|
pagination_class = None
|
|
permission_classes = get_permission_classes(
|
|
IsEstablishmentManager,
|
|
IsEstablishmentAdministrator
|
|
)
|
|
filter_backends = (OrderingFilter, DjangoFilterBackend)
|
|
ordering_fields = '__all__'
|
|
ordering = '-partner_bind_date'
|
|
|
|
def get_queryset(self):
|
|
return super().get_queryset().filter(establishment=self.kwargs['establishment_id'])
|
|
|
|
|
|
class PartnerRUDView(generics.RetrieveUpdateDestroyAPIView):
|
|
"""Partner RUD view."""
|
|
queryset = Partner.objects.with_base_related()
|
|
serializer_class = serializers.BackPartnerSerializer
|
|
lookup_field = 'id'
|
|
permission_classes = get_permission_classes(
|
|
IsEstablishmentManager,
|
|
IsEstablishmentAdministrator
|
|
)
|
|
|
|
|
|
class PartnerPicturesListView(generics.RetrieveAPIView):
|
|
lookup_field = 'id'
|
|
serializer_class = serializers.PartnerPicturesSerializer
|
|
queryset = Partner.objects.with_base_related()
|
|
permission_classes = get_permission_classes(
|
|
IsEstablishmentManager,
|
|
IsEstablishmentAdministrator
|
|
)
|
|
|
|
|
|
class BindPartnerToEstablishmentView(generics.CreateAPIView):
|
|
serializer_class = serializers.PartnersForEstablishmentSerializer
|
|
permission_classes = get_permission_classes(
|
|
IsEstablishmentManager,
|
|
IsEstablishmentAdministrator
|
|
)
|
|
|
|
|
|
class UnbindPartnerFromEstablishmentView(generics.DestroyAPIView):
|
|
serializer_class = serializers.PartnersForEstablishmentSerializer
|
|
permission_classes = get_permission_classes(
|
|
IsEstablishmentManager,
|
|
IsEstablishmentAdministrator
|
|
)
|
|
|
|
def get_object(self):
|
|
return get_object_or_404(PartnerToEstablishment, establishment_id=self.kwargs['establishment_id'],
|
|
partner_id=self.kwargs['partner_id'])
|