63 lines
2.9 KiB
Python
63 lines
2.9 KiB
Python
from django.shortcuts import render
|
|
|
|
from rest_framework.viewsets import ModelViewSet
|
|
from .models import Enterprise,EnterpriseAddress,Certunit
|
|
from utils.queryset import get_child_queryset2
|
|
from utils.pagination import PageOrNot
|
|
from .serializers import EnterpriseSerializer,EnterpriseListSerializer,EnterpriseAddressSerializer, CertunitSerializer
|
|
from apps.system.permission_data import RbacFilterSet
|
|
from apps.system.mixins import CreateUpdateCustomMixin, OptimizationMixin
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
from rest_framework.decorators import action
|
|
# Create your views here.
|
|
|
|
class EnterpriseViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet):
|
|
perms_map = {'get': '*', 'post': 'Enterprise_create',
|
|
'put': 'Enterprise_update', 'delete': 'Enterprise_delete'}
|
|
queryset = Enterprise.objects
|
|
serializer_class = EnterpriseSerializer
|
|
search_fields = ['name','query_code', 'code']
|
|
ordering = ['-create_time']
|
|
def get_serializer_class(self):
|
|
# 根据请求类型动态变更serializer
|
|
if self.action == 'list':
|
|
return EnterpriseListSerializer
|
|
return EnterpriseSerializer
|
|
|
|
|
|
class EnterpriseAddressViewSet(CreateUpdateCustomMixin, OptimizationMixin, ModelViewSet):
|
|
perms_map = {'get': '*', 'post': 'enterpriseaddress_create',
|
|
'put': 'enterpriseaddress_update', 'delete': 'enterpriseaddress_delete'}
|
|
queryset = EnterpriseAddress.objects
|
|
serializer_class = EnterpriseAddressSerializer
|
|
search_fields = ['address']
|
|
filterset_fields = ['enterprise']
|
|
ordering = ['-create_time']
|
|
def paginate_queryset(self, queryset):
|
|
|
|
if ((not self.request.query_params.get('page', None)) and (self.request.query_params.get('enterprise', None))) or (self.paginator is None):
|
|
return None
|
|
return self.paginator.paginate_queryset(queryset, self.request, view=self)
|
|
|
|
from apps.project.models import Certappunit, CertApp
|
|
class CertunitViewSet(CreateUpdateCustomMixin, PageOrNot, ModelViewSet):
|
|
"""
|
|
认证单元
|
|
"""
|
|
perms_map = {'get': '*', 'post':'certapp_create', 'put':'certapp_update'}
|
|
queryset = Certunit.objects.all()
|
|
serializer_class = CertunitSerializer
|
|
ordering = ['pk']
|
|
filterset_fields = ['enterprise', 'certappunit_certunit__certapp']
|
|
|
|
def create(self, request, *args, **kwargs):
|
|
if 'certapp' in request.data and request.data['certapp']:
|
|
certapp = CertApp.objects.get(pk=request.data['certapp'])
|
|
data = request.data
|
|
data['enterprise'] = certapp.applicant.id
|
|
serializer = self.get_serializer(data=data)
|
|
serializer.is_valid(raise_exception=True)
|
|
instance = serializer.save()
|
|
Certappunit.objects.create(certunit=instance, certapp=certapp)
|
|
return Response(serializer.data, status=status.HTTP_201_CREATED) |