phones for cascade establishment

This commit is contained in:
alex 2020-01-15 09:20:09 +03:00
parent 0cf62353be
commit 19b9e636c1

View File

@ -16,7 +16,7 @@ from utils.serializers import TimeZoneChoiceField
def phones_handler(phones_list, establishment): 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() ContactPhone.objects.filter(establishment=establishment).delete()
@ -37,8 +37,6 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria
queryset=models.Address.objects.all(), queryset=models.Address.objects.all(),
write_only=True write_only=True
) )
phones = model_serializers.ContactPhonesSerializer(read_only=True,
many=True, )
emails = model_serializers.ContactEmailsSerializer(read_only=True, emails = model_serializers.ContactEmailsSerializer(read_only=True,
many=True, ) many=True, )
socials = model_serializers.SocialNetworkRelatedSerializers(read_only=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', address_id = serializers.PrimaryKeyRelatedField(write_only=True, source='address',
queryset=Address.objects.all()) queryset=Address.objects.all())
tz = TimeZoneChoiceField() tz = TimeZoneChoiceField()
phones_list = serializers.ListField( phones = serializers.ListField(
child=serializers.CharField(max_length=20), source='contact_phones',
allow_null=True,
allow_empty=True, allow_empty=True,
write_only=True, child=serializers.CharField(max_length=128),
required=False,
) )
class Meta: class Meta:
@ -78,11 +78,13 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria
'tags', 'tags',
'tz', 'tz',
'address_id', 'address_id',
'phones_list',
] ]
def create(self, validated_data): 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) instance = super().create(validated_data)
phones_handler(phones_list, instance) phones_handler(phones_list, instance)
return instance return instance
@ -96,17 +98,17 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
queryset=models.EstablishmentType.objects.all(), write_only=True queryset=models.EstablishmentType.objects.all(), write_only=True
) )
address = AddressDetailSerializer() address = AddressDetailSerializer()
phones = model_serializers.ContactPhonesSerializer(read_only=False,
many=True, )
emails = model_serializers.ContactEmailsSerializer(read_only=False, emails = model_serializers.ContactEmailsSerializer(read_only=False,
many=True, ) many=True, )
socials = model_serializers.SocialNetworkRelatedSerializers(read_only=False, socials = model_serializers.SocialNetworkRelatedSerializers(read_only=False,
many=True, ) many=True, )
type = model_serializers.EstablishmentTypeBaseSerializer(source='establishment_type') type = model_serializers.EstablishmentTypeBaseSerializer(source='establishment_type')
phones_list = serializers.ListField( phones = serializers.ListField(
child=serializers.CharField(max_length=20), source='contact_phones',
allow_null=True,
allow_empty=True, allow_empty=True,
write_only=True, child=serializers.CharField(max_length=128),
required=False,
) )
class Meta: class Meta:
@ -127,11 +129,13 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
'is_publish', 'is_publish',
'address', 'address',
'tags', 'tags',
'phones_list',
] ]
def update(self, instance, validated_data): 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) instance = super().update(instance, validated_data)
phones_handler(phones_list, instance) phones_handler(phones_list, instance)
return instance return instance