factory/apps/rpm/serializers.py

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']