cnas/server/apps/certset/views.py

45 lines
1.8 KiB
Python

from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from .models import Standard, UnitType, ImplementRule
from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer, ImplementRuleListSerializer
# Create your views here.
class StandardViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'standard_create',
'put': 'standard_update', 'delete': 'standard_delete'}
queryset = Standard.objects
serializer_class = StandardSerializer
search_fields = ['name', 'code', 'status', 'implement_date']
filterset_fields = ['status']
ordering = ['-create_time']
class ImplementRuleViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'implementrule_create',
'put': 'implementrule_update', 'delete': 'implementrule_delete'}
queryset = ImplementRule.objects
serializer_class = ImplementRuleSerializer
search_fields = ['name', 'code', 'cert_type']
filterset_fields = ['pv_scope', 'cert_type']
ordering = ['-create_time']
def get_serializer_class(self):
# 根据请求类型动态变更serializer
if self.action == 'list':
return ImplementRuleListSerializer
return ImplementRuleSerializer
def get_queryset(self):
queryset = self.queryset
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
queryset = self.get_serializer_class().setup_eager_loading(queryset) # 性能优化
return queryset
class UnitTypedViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'unittype_create',
'put': 'unittype_update', 'delete': 'unittype_delete'}
queryset = UnitType.objects
serializer_class = UnitTypeSerializer
search_fields = ['name']
filterset_fields = ['name']
ordering = ['-create_time']