cnas/server/apps/certset/serializers.py

89 lines
3.2 KiB
Python

from rest_framework import serializers
from .models import Standard, UnitType, ImplementRule,EvaluationItem,Evaluations
from apps.system.serializers import DictSerializer
class StandardSerializer(serializers.ModelSerializer):
fullname = serializers.SerializerMethodField(read_only=True)
class Meta:
model = Standard
fields = '__all__'
def get_fullname(self, obj):
fullname = obj.code + ' ' + obj.name
if obj.code in obj.name:
fullname = obj.name
return fullname
class ImplementRuleSerializer(serializers.ModelSerializer):
cert_field_ = DictSerializer(source='cert_field', read_only=True)
fullname = serializers.SerializerMethodField(read_only=True)
class Meta:
model = ImplementRule
fields = '__all__'
def get_fullname(self, obj):
fullname = obj.code + ' ' + obj.name
if obj.code in obj.name:
fullname = obj.name
return fullname
class ImplementRuleListSerializer(serializers.ModelSerializer):
pv_scope = DictSerializer()
pv_class = DictSerializer()
cert_field = DictSerializer()
ccc_list = DictSerializer(many=True)
fullname = serializers.SerializerMethodField(read_only=True)
class Meta:
model = ImplementRule
fields = ['id', 'code', 'name', 'cert_field', 'pv_scope', 'pv_class', 'create_time', 'ccc_list', 'fullname']
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('pv_scope','pv_class', 'cert_field')
queryset = queryset.prefetch_related('ccc_list',)
return queryset
def get_fullname(self, obj):
fullname = obj.code + ' ' + obj.name
if obj.code in obj.name:
fullname = obj.name
return fullname
# def get_cert_field(self, obj):
# return obj.get_cert_field_display()
class UnitTypeSerializer(serializers.ModelSerializer):
standard_ = StandardSerializer(source='standard', read_only=True)
class Meta:
model = UnitType
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('standard','implementrule')
return queryset
class EvaluationItemSerializer(serializers.ModelSerializer):
cert_field_ = DictSerializer(source='cert_field', read_only=True)
class Meta:
model = EvaluationItem
fields = '__all__'
class EvaluationItemListSerializer(serializers.ModelSerializer):
pv_class = DictSerializer()
cert_field = DictSerializer()
ccc_list = DictSerializer()
class Meta:
model = EvaluationItem
fields = ['id', 'name', 'cert_field', 'pv_class', 'create_time', 'ccc_list']
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('pv_class', 'cert_field')
queryset = queryset.prefetch_related('ccc_list',)
return queryset
class EvaluationsSerializer(serializers.ModelSerializer):
class Meta:
model = Evaluations
fields = '__all__'