from apps.utils.serializers import CustomModelSerializer from apps.mtm.models import Shift, Material, Mgroup, Team, Goal, Process, Route from apps.utils.constants import EXCLUDE_FIELDS from rest_framework import serializers from apps.system.models import Dept class ShiftSerializer(CustomModelSerializer): class Meta: model = Shift fields = '__all__' read_only_fields = EXCLUDE_FIELDS class MaterialSerializer(CustomModelSerializer): class Meta: model = Material fields = '__all__' read_only_fields = EXCLUDE_FIELDS class MgroupSerializer(CustomModelSerializer): belong_dept = serializers.PrimaryKeyRelatedField(label="所属部门", queryset=Dept.objects.all(), required=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) class Meta: model = Mgroup fields = '__all__' read_only_fields = EXCLUDE_FIELDS class TeamSerializer(CustomModelSerializer): belong_dept = serializers.PrimaryKeyRelatedField(label="所属部门", queryset=Dept.objects.all(), required=True) leader_name = serializers.CharField(source='leader.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) class Meta: model = Team fields = '__all__' read_only_fields = EXCLUDE_FIELDS class GoalSerializer(CustomModelSerializer): goal_cate_name = serializers.CharField(source='goal_cate.name', read_only=True) mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) class Meta: model = Goal fields = '__all__' read_only_fields = EXCLUDE_FIELDS class MgroupGoalYearSerializer(serializers.Serializer): mgroup = serializers.CharField(label='ID或名称') year = serializers.IntegerField(label='年') class ProcessSerializer(CustomModelSerializer): belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) class Meta: model = Process fields = '__all__' read_only_fields = EXCLUDE_FIELDS class RouteSerializer(CustomModelSerializer): material_ = MaterialSerializer(source='material', read_only=True) process_name = serializers.CharField(source='process.name', read_only=True) process_cate = serializers.CharField(source='process.cate', read_only=True) class Meta: model = Route fields = '__all__' read_only_fields = EXCLUDE_FIELDS def update(self, instance, validated_data): validated_data.pop('material', None) validated_data.pop('process', None) return super().update(instance, validated_data)