from apps.project.filters import CertAppFilter from apps.plan.models import Plan from rest_framework import serializers from .models import * from apps.system.serializers import DictSerializer, UserSimpleSerializer, DictSimpleSerializer from apps.certset.serializers import StandardSerializer from apps.plan.serializers import PlanSerializer from apps.laboratory.serializers import TestOrgSerializer from apps.crm.serializers import EnterpriseSimpleSerializer # class ApplicationCreateSerializer(serializers.ModelSerializer): # number = serializers.CharField(required=False) # class Meta: # model = Application # fields = '__all__' # class ApplicationUpdateSerializer(serializers.ModelSerializer): # number = serializers.CharField(read_only=True) # stage_ = serializers.SerializerMethodField(source='stage', read_only=True) # class Meta: # model = Application # fields = '__all__' # def get_stage_(self, obj): # return obj.get_stage_display() # class SubApplicationCreateSerializer(serializers.ModelSerializer): # number = serializers.CharField(required=False) # class Meta: # model = SubApplication # fields = '__all__' # class SubApplicationUpdateSerializer(serializers.ModelSerializer): # number = serializers.CharField(read_only=True) # cert_field_ = DictSerializer(source='cert_field') # cccpv_class_ = DictSerializer(source='cccpv_class') # cnas_scopes_ = DictSerializer(source='cnas_scopes', many=True) # class Meta: # model = SubApplication # fields = '__all__' class CertappflowSerializer(serializers.ModelSerializer): handler_ = UserSimpleSerializer(source='handler', read_only=True) class Meta: model = CertAppFlow fields = ['handler_', 'create_time', 'operation', 'state'] class CertappSerializer(serializers.ModelSerializer): cert_field_ = DictSerializer(source='cert_field', read_only=True) cccpv_class_ = DictSerializer(source='cccpv_class' , read_only=True) cnas_scopes_ = DictSerializer(source='cnas_scopes', many=True , read_only=True) create_by_ = UserSimpleSerializer(source='create_by', read_only=True) accept_by_ = UserSimpleSerializer(source='accept_by', read_only=True) nonitems = serializers.SlugRelatedField(many=True, required=False, slug_field="id", queryset=Dict.objects.filter(is_deleted=1, type__code='factory_check_noitem')) class Meta: model = CertApp fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('cert_field','cccpv_class', 'create_by', 'accept_by') queryset = queryset.prefetch_related('cnas_scopes',) return queryset from apps.crm.serializers import CertunitSimpleSerializer from apps.certificate.models import Certificate class CertappunitSerializer(serializers.ModelSerializer): certunit_ = CertunitSimpleSerializer(source = 'certunit', read_only=True) decision_ = DictSimpleSerializer(source = 'decision', read_only=True) enterprise_ = EnterpriseSimpleSerializer(source='certunit.enterprise',read_only=True) testorg_ = TestOrgSerializer(source = 'testorg', read_only=True) certificate_ = serializers.SerializerMethodField() class Meta: model = Certappunit fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('certunit','testorg','decision','certunit.enterprise') return queryset def get_certificate_(self, obj): certificates = Certificate.objects.filter(certunit = obj.certunit).order_by('-create_time') if certificates.exists(): certificate = certificates[0] return {'id':certificate.id,'number':certificate.number} return None class CertappunitSerializerx(serializers.ModelSerializer): certunit_ = CertunitSimpleSerializer(source = 'certunit', read_only=True) decision_ = DictSimpleSerializer(source = 'decision', read_only=True) testorg_ = TestOrgSerializer(source = 'testorg', read_only=True) certificate_ = serializers.SerializerMethodField() class Meta: model = Certappunit fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('certunit','testorg','decision') return queryset def get_certificate_(self, obj): certificates = Certificate.objects.filter(certunit = obj.certunit).order_by('-create_time') if certificates.exists(): certificate = certificates[0] return {'id':certificate.id,'number':certificate.number} return None class EvaluationDetailSerializer(serializers.ModelSerializer): class Meta: model = EvaluationDetail fields = '__all__' @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('cert_field', 'cccpv_class', 'create_by', 'accept_by') queryset = queryset.prefetch_related('cnas_scopes',) return queryset class ProjectSerializer(serializers.ModelSerializer): create_by_ = UserSimpleSerializer(source='create_by', read_only=True) assign_by_ = UserSimpleSerializer(source='assign_by', read_only=True) certapps = serializers.SerializerMethodField() plan_ = PlanSerializer(source='plan', read_only=True) class Meta: model = Project fields = '__all__' def get_certapps(self, obj): certapps = [] for i in obj.certapp_project.filter(is_deleted=False): if i.cccpv_class: certapps.append(i.cert_field.code +'(' + i.cccpv_class.name +')') else: certapps.append(i.cert_field.code) return certapps @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ queryset = queryset.select_related('create_by', 'assign_by', 'plan') queryset = queryset.prefetch_related('certapp_project') return queryset class ProjectUpdateSerializer(serializers.ModelSerializer): class Meta: model = Project fields = ['remark', 'can_paichai']