62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
from apps.hrm.models import Employee
|
|
from apps.utils.constants import EXCLUDE_FIELDS
|
|
from apps.utils.serializers import CustomModelSerializer
|
|
from apps.vm.models import Visit, Visitor, Vpeople
|
|
from apps.hrm.serializers import phone_check
|
|
from rest_framework import serializers
|
|
from rest_framework.exceptions import ParseError
|
|
|
|
|
|
class VisitCreateUpdateSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Visit
|
|
fields = ['purpose', 'name', 'description', 'visit_time',
|
|
'leave_time', 'receptionist', 'company', 'level', 'count_people']
|
|
|
|
|
|
class VisitSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Visit
|
|
fields = '__all__'
|
|
|
|
|
|
class VisitorCreateSerializer(CustomModelSerializer):
|
|
phone = serializers.CharField(label="手机号", validators=[phone_check])
|
|
|
|
class Meta:
|
|
model = Visitor
|
|
fields = ['name', 'phone', 'photo', 'id_number']
|
|
|
|
|
|
class VisitorSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Visitor
|
|
fields = '__all__'
|
|
|
|
|
|
class VpeopleCreateSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Vpeople
|
|
fields = ['visit', 'visitor', 'is_main']
|
|
|
|
def create(self, validated_data):
|
|
if validated_data['visit'].state != Visit.V_CREATE:
|
|
raise ParseError('项目非创建状态不可新增成员')
|
|
ins = super().create(validated_data)
|
|
if ins.is_main:
|
|
Vpeople.objects.filter(visit=validated_data['visit']).exclude(id=ins.id).update(is_main=False)
|
|
return ins
|
|
|
|
|
|
class VpeopleSerializer(CustomModelSerializer):
|
|
visitor_ = VisitorSerializer(source='visitor', read_only=True)
|
|
|
|
class Meta:
|
|
model = Vpeople
|
|
fields = '__all__'
|
|
|
|
|
|
class VisitorRegisterSerializer(serializers.Serializer):
|
|
name = serializers.CharField(label="姓名")
|
|
username = serializers.CharField(label='用户名', min_length=6)
|