perf: 添加BasePermissionsViewSet,支持搜索过滤

This commit is contained in:
Bai
2020-12-11 15:29:02 +08:00
committed by Jiangjie.Bai
parent 2176fd8fac
commit 6703ab9a77
3 changed files with 116 additions and 88 deletions

View File

@@ -1,12 +1,12 @@
# -*- coding: utf-8 -*-
#
from common.permissions import IsOrgAdmin
from orgs.mixins.api import OrgBulkModelViewSet
from applications.models import Application
from perms.models import ApplicationPermission
from perms import serializers
from ..base import BasePermissionViewSet
class ApplicationPermissionViewSet(OrgBulkModelViewSet):
class ApplicationPermissionViewSet(BasePermissionViewSet):
"""
应用授权列表的增删改查API
"""
@@ -14,7 +14,6 @@ class ApplicationPermissionViewSet(OrgBulkModelViewSet):
serializer_class = serializers.ApplicationPermissionSerializer
filter_fields = ['name', 'category', 'type']
search_fields = filter_fields
permission_classes = (IsOrgAdmin,)
def get_queryset(self):
queryset = super().get_queryset().prefetch_related(
@@ -22,3 +21,22 @@ class ApplicationPermissionViewSet(OrgBulkModelViewSet):
)
return queryset
def filter_application(self, queryset):
application_id = self.request.query_params.get('application_id')
application_name = self.request.query_params.get('application')
if application_id:
applications = Application.objects.filter(pk=application_id)
elif application_name:
applications = Application.objects.filter(name=application_name)
else:
return queryset
if not applications:
return queryset.none()
queryset = queryset.filter(applications=applications)
return queryset
def filter_queryset(self, queryset):
queryset = super().filter_queryset(queryset)
queryset = self.filter_application(queryset)
return queryset