80 lines
3.4 KiB
Python
80 lines
3.4 KiB
Python
from django.conf import settings
|
|
from django.core.cache import cache
|
|
from django.db.models import Count, Q
|
|
from django.db.models.query import QuerySet
|
|
from django.http import request
|
|
from django.shortcuts import render
|
|
from django.utils import timezone
|
|
from rest_framework import status
|
|
from rest_framework.decorators import action, permission_classes
|
|
from rest_framework.exceptions import PermissionDenied, ParseError
|
|
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin
|
|
from rest_framework.permissions import IsAdminUser
|
|
from rest_framework.response import Response
|
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
|
from utils.pagination import PageOrNot
|
|
|
|
from apps.system.mixins import CreateUpdateCustomMixin, CreateUpdateModelAMixin, OptimizationMixin
|
|
from apps.system.models import Organization
|
|
from apps.system.permission import get_permission_list, has_permission
|
|
from apps.system.permission_data import RbacFilterSet
|
|
|
|
from .models import *
|
|
from .serializers import *
|
|
# Create your views here.
|
|
class RegulatoryViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
|
perms_map = {'get': '*', 'post': 'regulatory_create',
|
|
'put': 'regulatory_update', 'delete': 'regulatory_delete'}
|
|
queryset = Regulatory.objects.all()
|
|
serializer_class = RegulatorySerializer
|
|
ordering = ['-id']
|
|
search_fields = ['provinces']
|
|
ordering_fields = ['provinces']
|
|
filterset_fields = ['provinces']
|
|
|
|
class ProfessionalViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
|
perms_map = {'get': '*', 'post': 'professional_create',
|
|
'put': 'professional_update', 'delete': 'professional_delete'}
|
|
queryset = Professional.objects.all()
|
|
serializer_class = ProfessionalSerializer
|
|
ordering = ['-id']
|
|
class PolicyViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
|
perms_map = {'get': '*', 'post': 'policy_create',
|
|
'put': 'policy_update', 'delete': 'policy_delete'}
|
|
queryset = Policy.objects.all()
|
|
serializer_class = PolicySerializer
|
|
filterset_fields = ['cate', 'name', 'year', 'month']
|
|
search_fields = ['cate', 'name', 'description']
|
|
ordering = ['-id']
|
|
|
|
def can_view_top(self, user):
|
|
if user.dept.type and user.dept.type.name == '部门':
|
|
return True
|
|
elif user.dept.name in ['福建分公司', '河南分公司']:
|
|
return True
|
|
return False
|
|
|
|
def get_queryset(self):
|
|
cate = self.request.query_params.get('cate', '')
|
|
if cate:
|
|
if cate == '总部文件':
|
|
user = self.request.user
|
|
if self.can_view_top(user):
|
|
return Policy.objects.filter(cate=cate)
|
|
else:
|
|
return Policy.objects.none()
|
|
else:
|
|
if self.request.method == 'GET':
|
|
raise ParseError('请提供cate查询条件')
|
|
return super().get_queryset()
|
|
|
|
class ValidationViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
|
perms_map = {'get': '*', 'post': 'validation_create',
|
|
'put': 'policy_update', 'delete': 'validation_delete'}
|
|
queryset = Validation.objects.all()
|
|
serializer_class = ValidationSerializer
|
|
ordering = ['-id']
|
|
search_fields = ['provinces']
|
|
ordering_fields = ['provinces']
|
|
filterset_fields = ['provinces']
|