gault-millau/apps/partner/serializers/back.py
2020-01-29 19:59:11 +03:00

86 lines
3.1 KiB
Python

"""Back account serializers"""
from rest_framework import serializers
from partner.models import Partner, PartnerToEstablishment
from establishment.serializers import EstablishmentShortSerializer
from location.serializers import CountrySimpleSerializer
from location.models import Country
from django.shortcuts import get_object_or_404
from establishment.models import Establishment
class BackPartnerSerializer(serializers.ModelSerializer):
# 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(
queryset=Country.objects.all(),
required=False,
write_only=True,
source='country'
)
class Meta:
model = Partner
fields = (
'id',
'name',
'images',
'type',
'type_display',
'starting_date',
'expiry_date',
'price_per_month',
'country',
'country_id',
# 'establishments',
)
extra_kwargs = {
'type': {'write_only': True},
}
class PartnersForEstablishmentSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(source='partner.pk', read_only=True)
name = serializers.CharField(source='partner.name', read_only=True)
type = serializers.IntegerField(source='partner.type', read_only=True)
type_display = serializers.CharField(source='partner.type_display', read_only=True)
starting_date = serializers.DateField(source='partner.starting_date', read_only=True)
expiry_date = serializers.DateField(source='partner.expiry_date', read_only=True)
price_per_month = serializers.DecimalField(source='partner.price_per_month', max_digits=10, decimal_places=2,
read_only=True)
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', # own field
'image', # own field
)
def create(self, validated_data):
establishment_id = self.context['view'].kwargs['establishment_id']
partner_id = self.context['view'].kwargs['partner_id']
establishment = get_object_or_404(Establishment, pk=establishment_id)
partner = get_object_or_404(Partner, pk=partner_id)
instance = PartnerToEstablishment.objects.create(**validated_data,
establishment=establishment,
partner=partner)
return instance
class PartnerPicturesSerializer(serializers.ModelSerializer):
class Meta:
model = Partner
fields = (
'images',
)