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)