From 19b9e636c13f4e3adf3009064211bbad8bb855a0 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 15 Jan 2020 09:20:09 +0300 Subject: [PATCH] phones for cascade establishment --- apps/establishment/serializers/back.py | 34 ++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index 54f46780..893e9439 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -16,7 +16,7 @@ from utils.serializers import TimeZoneChoiceField def phones_handler(phones_list, establishment): """ - create or update phones for establishment 35016 string + create or update phones for establishment """ ContactPhone.objects.filter(establishment=establishment).delete() @@ -37,8 +37,6 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria queryset=models.Address.objects.all(), write_only=True ) - phones = model_serializers.ContactPhonesSerializer(read_only=True, - many=True, ) emails = model_serializers.ContactEmailsSerializer(read_only=True, many=True, ) socials = model_serializers.SocialNetworkRelatedSerializers(read_only=True, @@ -48,10 +46,12 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria address_id = serializers.PrimaryKeyRelatedField(write_only=True, source='address', queryset=Address.objects.all()) tz = TimeZoneChoiceField() - phones_list = serializers.ListField( - child=serializers.CharField(max_length=20), + phones = serializers.ListField( + source='contact_phones', + allow_null=True, allow_empty=True, - write_only=True, + child=serializers.CharField(max_length=128), + required=False, ) class Meta: @@ -78,11 +78,13 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria 'tags', 'tz', 'address_id', - 'phones_list', ] def create(self, validated_data): - phones_list = validated_data.pop('phones_list') + phones_list = [] + if 'contact_phones' in validated_data: + phones_list = validated_data.pop('contact_phones') + instance = super().create(validated_data) phones_handler(phones_list, instance) return instance @@ -96,17 +98,17 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer): queryset=models.EstablishmentType.objects.all(), write_only=True ) address = AddressDetailSerializer() - phones = model_serializers.ContactPhonesSerializer(read_only=False, - many=True, ) emails = model_serializers.ContactEmailsSerializer(read_only=False, many=True, ) socials = model_serializers.SocialNetworkRelatedSerializers(read_only=False, many=True, ) type = model_serializers.EstablishmentTypeBaseSerializer(source='establishment_type') - phones_list = serializers.ListField( - child=serializers.CharField(max_length=20), + phones = serializers.ListField( + source='contact_phones', + allow_null=True, allow_empty=True, - write_only=True, + child=serializers.CharField(max_length=128), + required=False, ) class Meta: @@ -127,11 +129,13 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer): 'is_publish', 'address', 'tags', - 'phones_list', ] def update(self, instance, validated_data): - phones_list = validated_data.pop('phones_list') + phones_list = [] + if 'contact_phones' in validated_data: + phones_list = validated_data.pop('contact_phones') + instance = super().update(instance, validated_data) phones_handler(phones_list, instance) return instance