cnas/server/apps/certset/views.py

48 lines
2.2 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
from apps.system.permission_data import RbacFilterSet
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
# Create your views here.
class StandardViewSet(CreateUpdateCustomMixin, 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(CreateUpdateCustomMixin, OptimizationMixin, 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
class UnitTypedViewSet(CreateUpdateCustomMixin, OptimizationMixin, 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','implementrule']
ordering = ['-create_time']
def paginate_queryset(self, queryset):
"""
如果查询参数里没有page且含有参数implementrule则不分页,否则请求分页
"""
if ((not self.request.query_params.get('page', None)) and (self.request.query_params.get('implementrule', None))) or (self.paginator is None):
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self)