97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
from apps.hrm.models import Employee
|
|
from apps.hrm.serializers import phone_check
|
|
from apps.rpm.models import Rparty, Rpeople, Rproject
|
|
from apps.system.models import Dept
|
|
from apps.utils.constants import EXCLUDE_FIELDS
|
|
from apps.utils.serializers import CustomModelSerializer
|
|
from apps.system.serializers import DictSerializer, FileSerializer
|
|
from rest_framework import serializers
|
|
|
|
|
|
class RpartyCreateUpdateSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Rparty
|
|
fields = ['name', 'number', 'lawer', 'contacter', 'phone', 'email',
|
|
'description', 'belong_dept']
|
|
extra_kwargs = {
|
|
'belong_dept': {'required': True}
|
|
}
|
|
|
|
def create(self, validated_data):
|
|
instance = super().create(validated_data)
|
|
dept = Dept.objects.create(name=instance.name,
|
|
parent=instance.belong_dept)
|
|
instance.dept = dept
|
|
instance.save()
|
|
return instance
|
|
|
|
def update(self, instance, validated_data):
|
|
instance = super().update(instance, validated_data)
|
|
dept = instance.dept
|
|
dept.name = instance.name
|
|
dept.parent = instance.belong_dept
|
|
dept.save()
|
|
return instance
|
|
|
|
|
|
class RpartySerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Rparty
|
|
fields = '__all__'
|
|
|
|
|
|
class RpartySimpleSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Rparty
|
|
fields = ['id', 'name']
|
|
|
|
|
|
class RpartyAssignSerializer(serializers.Serializer):
|
|
username = serializers.CharField('用户名')
|
|
|
|
|
|
class RpartyFileListSerializer(CustomModelSerializer):
|
|
rparty_ = RpartySimpleSerializer(source='rparty', read_only=True)
|
|
file_cate_ = DictSerializer(source='file_cate', read_only=True)
|
|
files_ = FileSerializer(source='files', many=True, read_only=True)
|
|
|
|
|
|
class RprojectCreateUpdateSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Rproject
|
|
fields = ['name', 'contract_number', 'type', 'come_time', 'leave_time', 'belong_dept']
|
|
|
|
|
|
class RprojectListSerializer(CustomModelSerializer):
|
|
class Meta:
|
|
model = Rproject
|
|
fields = '__all__'
|
|
|
|
|
|
class RemployeeCreateUpdateSerializer(CustomModelSerializer):
|
|
phone = serializers.CharField(label="手机号", validators=[phone_check])
|
|
rparty = serializers.PrimaryKeyRelatedField(queryset=Rparty.objects.all(), label='相关方ID', required=False)
|
|
|
|
class Meta:
|
|
model = Employee
|
|
exclude = EXCLUDE_FIELDS + ['face_data',
|
|
'is_atwork', 'last_check_time',
|
|
'not_work_remark', 'third_info', 'type']
|
|
extra_kwargs = {
|
|
'phone': {'required': True},
|
|
'number': {'required': True},
|
|
'photo': {'required': True},
|
|
'id_number': {'required': True},
|
|
}
|
|
|
|
|
|
class RpeopleCreatesSerializer(CustomModelSerializer):
|
|
employees = serializers.PrimaryKeyRelatedField(
|
|
queryset=Employee.objects.filter(type='remployee'),
|
|
many=True, label='员工ID列表'
|
|
)
|
|
|
|
class Meta:
|
|
model = Rpeople
|
|
fields = ['employees', 'rproject']
|