phone_list field create and update
This commit is contained in:
parent
f93337def3
commit
605a3e12e1
|
|
@ -1,16 +1,27 @@
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from account.serializers.common import UserShortSerializer
|
||||||
from establishment import models
|
from establishment import models
|
||||||
from establishment import serializers as model_serializers
|
from establishment import serializers as model_serializers
|
||||||
|
from establishment.models import ContactPhone
|
||||||
|
from gallery.models import Image
|
||||||
|
from location.models import Address
|
||||||
from location.serializers import AddressDetailSerializer, TranslatedField
|
from location.serializers import AddressDetailSerializer, TranslatedField
|
||||||
from main.models import Currency
|
from main.models import Currency
|
||||||
from location.models import Address
|
|
||||||
from main.serializers import AwardSerializer
|
from main.serializers import AwardSerializer
|
||||||
from utils.decorators import with_base_attributes
|
from utils.decorators import with_base_attributes
|
||||||
from utils.serializers import TimeZoneChoiceField
|
from utils.serializers import TimeZoneChoiceField
|
||||||
from gallery.models import Image
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
from account.serializers.common import UserShortSerializer
|
def phones_handler(phones_list, establishment):
|
||||||
|
"""
|
||||||
|
create or update phones for establishment 35016 string
|
||||||
|
"""
|
||||||
|
ContactPhone.objects.filter(establishment=establishment).delete()
|
||||||
|
|
||||||
|
for new_phone in phones_list:
|
||||||
|
ContactPhone.objects.create(establishment=establishment, phone=new_phone)
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSerializer):
|
class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSerializer):
|
||||||
|
|
@ -37,6 +48,11 @@ 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(
|
||||||
|
child=serializers.CharField(max_length=20),
|
||||||
|
allow_empty=True,
|
||||||
|
write_only=True,
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Establishment
|
model = models.Establishment
|
||||||
|
|
@ -62,8 +78,15 @@ class EstablishmentListCreateSerializer(model_serializers.EstablishmentBaseSeria
|
||||||
'tags',
|
'tags',
|
||||||
'tz',
|
'tz',
|
||||||
'address_id',
|
'address_id',
|
||||||
|
'phones_list',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
phones_list = validated_data.pop('phones_list')
|
||||||
|
instance = super().create(validated_data)
|
||||||
|
phones_handler(phones_list, instance)
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
||||||
"""Establishment create serializer"""
|
"""Establishment create serializer"""
|
||||||
|
|
@ -101,6 +124,12 @@ class EstablishmentRUDSerializer(model_serializers.EstablishmentBaseSerializer):
|
||||||
'tags',
|
'tags',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
phones_list = validated_data.pop('phones_list')
|
||||||
|
instance = super().update(instance, validated_data)
|
||||||
|
phones_handler(phones_list, instance)
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class SocialChoiceSerializers(serializers.ModelSerializer):
|
class SocialChoiceSerializers(serializers.ModelSerializer):
|
||||||
"""SocialChoice serializers."""
|
"""SocialChoice serializers."""
|
||||||
|
|
@ -166,7 +195,6 @@ class ContactEmailBackSerializers(model_serializers.PlateSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PositionBackSerializer(serializers.ModelSerializer):
|
class PositionBackSerializer(serializers.ModelSerializer):
|
||||||
"""Position Back serializer."""
|
"""Position Back serializer."""
|
||||||
|
|
||||||
|
|
@ -181,6 +209,7 @@ class PositionBackSerializer(serializers.ModelSerializer):
|
||||||
'index_name',
|
'index_name',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
# TODO: test decorator
|
# TODO: test decorator
|
||||||
@with_base_attributes
|
@with_base_attributes
|
||||||
class EmployeeBackSerializers(serializers.ModelSerializer):
|
class EmployeeBackSerializers(serializers.ModelSerializer):
|
||||||
|
|
@ -190,24 +219,22 @@ class EmployeeBackSerializers(serializers.ModelSerializer):
|
||||||
establishment = serializers.SerializerMethodField()
|
establishment = serializers.SerializerMethodField()
|
||||||
awards = AwardSerializer(many=True, read_only=True)
|
awards = AwardSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
|
|
||||||
def get_public_mark(self, obj):
|
def get_public_mark(self, obj):
|
||||||
"""Get last list actual public_mark"""
|
"""Get last list actual public_mark"""
|
||||||
qs = obj.establishmentemployee_set.actual().order_by('-from_date')\
|
qs = obj.establishmentemployee_set.actual().order_by('-from_date') \
|
||||||
.values('establishment__public_mark').first()
|
.values('establishment__public_mark').first()
|
||||||
return qs['establishment__public_mark'] if qs else None
|
return qs['establishment__public_mark'] if qs else None
|
||||||
|
|
||||||
|
|
||||||
def get_positions(self, obj):
|
def get_positions(self, obj):
|
||||||
"""Get last list actual positions"""
|
"""Get last list actual positions"""
|
||||||
est_id = obj.establishmentemployee_set.actual().\
|
est_id = obj.establishmentemployee_set.actual(). \
|
||||||
order_by('-from_date').first()
|
order_by('-from_date').first()
|
||||||
|
|
||||||
if not est_id:
|
if not est_id:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
qs = obj.establishmentemployee_set.actual()\
|
qs = obj.establishmentemployee_set.actual() \
|
||||||
.filter(establishment_id=est_id.establishment_id)\
|
.filter(establishment_id=est_id.establishment_id) \
|
||||||
.prefetch_related('position').values('position')
|
.prefetch_related('position').values('position')
|
||||||
|
|
||||||
positions = models.Position.objects.filter(id__in=[q['position'] for q in qs])
|
positions = models.Position.objects.filter(id__in=[q['position'] for q in qs])
|
||||||
|
|
@ -216,7 +243,7 @@ class EmployeeBackSerializers(serializers.ModelSerializer):
|
||||||
|
|
||||||
def get_establishment(self, obj):
|
def get_establishment(self, obj):
|
||||||
"""Get last actual establishment"""
|
"""Get last actual establishment"""
|
||||||
est = obj.establishmentemployee_set.actual().order_by('-from_date')\
|
est = obj.establishmentemployee_set.actual().order_by('-from_date') \
|
||||||
.first()
|
.first()
|
||||||
|
|
||||||
if not est:
|
if not est:
|
||||||
|
|
@ -380,6 +407,7 @@ class EstablishmentNoteListCreateSerializer(EstablishmentNoteBaseSerializer):
|
||||||
|
|
||||||
class EstablishmentAdminListSerializer(UserShortSerializer):
|
class EstablishmentAdminListSerializer(UserShortSerializer):
|
||||||
"""Establishment admin serializer."""
|
"""Establishment admin serializer."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserShortSerializer.Meta.model
|
model = UserShortSerializer.Meta.model
|
||||||
fields = [
|
fields = [
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user