From 0261deb5dff7ecda6f092853a5a341f19ce34b7c Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Wed, 29 Jan 2020 19:18:09 +0300 Subject: [PATCH] get partners by establishment --- apps/partner/serializers/back.py | 32 +++++++++++++++++++++++++++++--- apps/partner/urls/back.py | 1 + apps/partner/views/back.py | 13 ++++++++++++- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/apps/partner/serializers/back.py b/apps/partner/serializers/back.py index a9e9bfa1..fb424970 100644 --- a/apps/partner/serializers/back.py +++ b/apps/partner/serializers/back.py @@ -1,13 +1,13 @@ """Back account serializers""" from rest_framework import serializers -from partner.models import Partner +from partner.models import Partner, PartnerToEstablishment from establishment.serializers import EstablishmentShortSerializer from location.serializers import CountrySimpleSerializer from location.models import Country class BackPartnerSerializer(serializers.ModelSerializer): - establishments = EstablishmentShortSerializer(many=True, read_only=True, source='establishment') + # establishments = EstablishmentShortSerializer(many=True, read_only=True, source='establishment') country = CountrySimpleSerializer(read_only=True) type_display = serializers.CharField(read_only=True) country_id = serializers.PrimaryKeyRelatedField( @@ -30,13 +30,39 @@ class BackPartnerSerializer(serializers.ModelSerializer): 'price_per_month', 'country', 'country_id', - 'establishments', + # 'establishments', ) extra_kwargs = { 'type': {'write_only': True}, } +class PartnersForEstablishmentSerializer(serializers.ModelSerializer): + id = serializers.IntegerField(source='partner.pk') + name = serializers.CharField(source='partner.name') + type = serializers.IntegerField(source='partner.type') + type_display = serializers.CharField(source='partner.type_display') + starting_date = serializers.DateField(source='partner.starting_date') + expiry_date = serializers.DateField(source='partner.expiry_date') + price_per_month = serializers.DecimalField(source='partner.price_per_month', max_digits=10, decimal_places=2) + country = CountrySimpleSerializer(read_only=True, source='partner.country') + + class Meta: + model = PartnerToEstablishment + fields = ( + 'id', + 'name', + 'type', + 'type_display', + 'starting_date', + 'expiry_date', + 'price_per_month', + 'country', + 'url', + 'image', + ) + + class PartnerPicturesSerializer(serializers.ModelSerializer): class Meta: diff --git a/apps/partner/urls/back.py b/apps/partner/urls/back.py index cc6bed24..3d13e623 100644 --- a/apps/partner/urls/back.py +++ b/apps/partner/urls/back.py @@ -8,6 +8,7 @@ app_name = 'partner' urlpatterns = [ path('', views.PartnerLstView.as_view(), name='partner-list-create'), path('/', views.PartnerRUDView.as_view(), name='partner-rud'), + path('for_establishment//', views.EstablishmentPartners.as_view(), name='partners-for-establishment'), path('pictures//', views.PartnerPicturesListView.as_view(), name='partner-pictures-get'), # path('bind///', views.BindPartnerToEstablishmentView.as_view(), # name='bind-partner-to-establishment'), diff --git a/apps/partner/views/back.py b/apps/partner/views/back.py index 4d51e76a..1594b7cf 100644 --- a/apps/partner/views/back.py +++ b/apps/partner/views/back.py @@ -1,7 +1,7 @@ from rest_framework import generics, permissions from partner import filters -from partner.models import Partner +from partner.models import Partner, PartnerToEstablishment from partner.serializers import back as serializers from utils.permissions import IsEstablishmentManager @@ -18,6 +18,17 @@ class PartnerLstView(generics.ListCreateAPIView): filter_class = filters.PartnerFilterSet +class EstablishmentPartners(generics.ListAPIView): + queryset = PartnerToEstablishment.objects.all() + serializer_class = serializers.PartnersForEstablishmentSerializer + pagination_class = None + permission_classes = [permissions.IsAdminUser | IsEstablishmentManager] + # filter_class = filters.PartnerFilterSet + + 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()