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"""
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:

View File

@ -8,6 +8,7 @@ app_name = 'partner'
urlpatterns = [
path('', views.PartnerLstView.as_view(), name='partner-list-create'),
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('bind/<int:partner_id>/<int:establishment_id>/', views.BindPartnerToEstablishmentView.as_view(),
# name='bind-partner-to-establishment'),

View File

@ -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()