get partners by establishment

This commit is contained in:
Kuroshini 2020-01-29 19:18:09 +03:00
parent 0e7fd39d37
commit 0261deb5df
3 changed files with 42 additions and 4 deletions

View File

@ -1,13 +1,13 @@
"""Back account serializers""" """Back account serializers"""
from rest_framework import serializers from rest_framework import serializers
from partner.models import Partner from partner.models import Partner, PartnerToEstablishment
from establishment.serializers import EstablishmentShortSerializer from establishment.serializers import EstablishmentShortSerializer
from location.serializers import CountrySimpleSerializer from location.serializers import CountrySimpleSerializer
from location.models import Country from location.models import Country
class BackPartnerSerializer(serializers.ModelSerializer): 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) country = CountrySimpleSerializer(read_only=True)
type_display = serializers.CharField(read_only=True) type_display = serializers.CharField(read_only=True)
country_id = serializers.PrimaryKeyRelatedField( country_id = serializers.PrimaryKeyRelatedField(
@ -30,13 +30,39 @@ class BackPartnerSerializer(serializers.ModelSerializer):
'price_per_month', 'price_per_month',
'country', 'country',
'country_id', 'country_id',
'establishments', # 'establishments',
) )
extra_kwargs = { extra_kwargs = {
'type': {'write_only': True}, '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 PartnerPicturesSerializer(serializers.ModelSerializer):
class Meta: class Meta:

View File

@ -8,6 +8,7 @@ app_name = 'partner'
urlpatterns = [ urlpatterns = [
path('', views.PartnerLstView.as_view(), name='partner-list-create'), path('', views.PartnerLstView.as_view(), name='partner-list-create'),
path('<int:id>/', views.PartnerRUDView.as_view(), name='partner-rud'), path('<int:id>/', views.PartnerRUDView.as_view(), name='partner-rud'),
path('for_establishment/<int:establishment_id>/', views.EstablishmentPartners.as_view(), name='partners-for-establishment'),
path('pictures/<int:id>/', views.PartnerPicturesListView.as_view(), name='partner-pictures-get'), path('pictures/<int:id>/', views.PartnerPicturesListView.as_view(), name='partner-pictures-get'),
# path('bind/<int:partner_id>/<int:establishment_id>/', views.BindPartnerToEstablishmentView.as_view(), # path('bind/<int:partner_id>/<int:establishment_id>/', views.BindPartnerToEstablishmentView.as_view(),
# name='bind-partner-to-establishment'), # name='bind-partner-to-establishment'),

View File

@ -1,7 +1,7 @@
from rest_framework import generics, permissions from rest_framework import generics, permissions
from partner import filters from partner import filters
from partner.models import Partner from partner.models import Partner, PartnerToEstablishment
from partner.serializers import back as serializers from partner.serializers import back as serializers
from utils.permissions import IsEstablishmentManager from utils.permissions import IsEstablishmentManager
@ -18,6 +18,17 @@ class PartnerLstView(generics.ListCreateAPIView):
filter_class = filters.PartnerFilterSet 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): class PartnerRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Partner RUD view.""" """Partner RUD view."""
queryset = Partner.objects.with_base_related() queryset = Partner.objects.with_base_related()