from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.serializers import CustomModelSerializer from rest_framework import serializers from apps.wpm.models import SfLog, StLog, StSfLog from apps.system.models import Dictionary class StLogSerializer(CustomModelSerializer): mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) class Meta: model = StLog fields = '__all__' class SfLogSerializer(CustomModelSerializer): mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) team_name = serializers.CharField(source='team.name', read_only=True) shift_name = serializers.CharField(source='shift.name', read_only=True) leader_name = serializers.CharField(source='leader.name', read_only=True) class Meta: model = SfLog fields = '__all__' read_only_fields = EXCLUDE_FIELDS + ['mgroup', 'start_time', 'end_time', 'belong_dept'] extra_kwargs = { 'team': {'required': True}, 'leader': {'required': True} } # def to_internal_value(self, data): # if hasattr(self.Meta, 'update_fields') and self.context['request'].method in ['PUT', 'PATCH']: # u_fields = self.Meta.update_fields # new_data = {key: data[key] for key in u_fields if key in data} # return super().to_internal_value(new_data) # return super().to_internal_value(data) class StSfLogSerializer(CustomModelSerializer): stlog_ = StLogSerializer(source='stlog', read_only=True) sflog_ = SfLogSerializer(source='sflog', read_only=True) class Meta: model = StSfLog fields = '__all__' read_only_fields = EXCLUDE_FIELDS + ['stlog', 'sflog', 'is_current_down']