140 lines
5.4 KiB
Python
140 lines
5.4 KiB
Python
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 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']
|