cnas/server/apps/project/views.py

99 lines
4.0 KiB
Python

from django.shortcuts import render
import rest_framework
from rest_framework.viewsets import ModelViewSet, GenericViewSet
from rest_framework.response import Response
from rest_framework import status
from .models import *
from .serializers import *
from apps.system.models import Dict
from apps.system.permission_data import RbacFilterSet
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
import random
# Create your views here.
class ApplicationViewSet(CreateUpdateCustomMixin, ModelViewSet):
"""
认证申请
"""
perms_map = {'get': 'application_view', 'post':'application_create', 'put':'application_update','delete': 'application_delete'}
queryset = Application.objects.all()
serializer_class = ApplicationCreateSerializer
ordering = ['-create_time']
def get_serializer_class(self):
if self.action == 'create':
return ApplicationCreateSerializer
else:
return ApplicationUpdateSerializer
def perform_create(self, serializer):
serializer.save(create_by = self.request.user, belong_dept=self.request.user.dept, number=random.randrange(1000,2000))
class SubApplicationViewSet(CreateUpdateCustomMixin, ModelViewSet):
"""
子认证申请
"""
perms_map = {'get': 'application_view', 'post':'application_create', 'put':'application_update','delete': 'application_delete'}
queryset = SubApplication.objects.all()
serializer_class = SubApplicationCreateSerializer
filterset_fields = ['application']
ordering = ['-create_time']
def get_serializer_class(self):
if self.action == 'create':
return SubApplicationCreateSerializer
else:
return SubApplicationUpdateSerializer
def create(self, request, *args, **kwargs):
postdata = request.data
postdata['number'] = random.randrange(1000,2000)
serializer = self.get_serializer(data=postdata)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def paginate_queryset(self, queryset):
if ((not self.request.query_params.get('page', None)) and (self.request.query_params.get('application', None))) or (self.paginator is None):
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self)
class CertappViewset(CreateUpdateCustomMixin, ModelViewSet):
"""
申请受理
"""
perms_map = {'get': 'certapp_view', 'post':'certapp_create', 'put':'certapp_update','delete': 'certapp_delete'}
queryset = CertApp.objects.all()
serializer_class = CertappSerializer
ordering = ['-create_time']
def create(self, request, *args, **kwargs):
postdata = request.data
postdata['number'] = random.randrange(1000,2000)
if postdata.get('field_code', None):
postdata['cert_field'] = Dict.objects.get(code=postdata['field_code']).id
print(postdata)
serializer = self.get_serializer(data=postdata)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
class EvaluationDetailViewset(CreateUpdateCustomMixin, ModelViewSet):
"""
受理信息
"""
perms_map = {'get': '*', 'post': 'EvaluationDetail_create',
'put': 'EvaluationDetail_update', 'delete': 'EvaluationDetail_delete'}
queryset = EvaluationDetail.objects
serializer_class = EvaluationDetailSerializer
filterset_fields = ['cert_app']
ordering = ['-create_time']
def paginate_queryset(self, queryset):
if ((not self.request.query_params.get('page', None)) and (self.request.query_params.get('cert_app', None))) or (self.paginator is None):
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self)