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