From e20e2d795a00ca08da009b94539ff5dc73e57846 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 21 Sep 2023 11:19:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20policy=E5=A2=9E=E5=8A=A0=E6=80=BB?= =?UTF-8?q?=E9=83=A8=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/consulting/views.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/apps/consulting/views.py b/server/apps/consulting/views.py index 9d9b6c8..7d2450c 100644 --- a/server/apps/consulting/views.py +++ b/server/apps/consulting/views.py @@ -7,7 +7,7 @@ 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 +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 @@ -46,6 +46,27 @@ class PolicyViewSet(OptimizationMixin, PageOrNot, CreateUpdateModelAMixin, Model filterset_fields = ['cate', 'name'] 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: + 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'}