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)