feat: 应用按类型筛选可以指定多个类型

pull/6494/head^2
xinwen 2021-07-16 17:09:06 +08:00 committed by 老广
parent c21217d50c
commit 3f0a0b33b5
4 changed files with 20 additions and 6 deletions

View File

@ -1,11 +1,11 @@
# coding: utf-8 # coding: utf-8
# #
from orgs.mixins.api import OrgBulkModelViewSet from orgs.mixins.api import OrgBulkModelViewSet
from ..hands import IsOrgAdminOrAppUser from ..hands import IsOrgAdminOrAppUser
from .. import serializers from .. import serializers
from ..models import Application from ..models import Application
from applications.filters import ApplicationFilter
__all__ = ['ApplicationViewSet'] __all__ = ['ApplicationViewSet']
@ -13,7 +13,7 @@ __all__ = ['ApplicationViewSet']
class ApplicationViewSet(OrgBulkModelViewSet): class ApplicationViewSet(OrgBulkModelViewSet):
model = Application model = Application
filterset_fields = ('name', 'type', 'category') filterset_class = ApplicationFilter
search_fields = filterset_fields search_fields = ('name', 'type', 'category')
permission_classes = (IsOrgAdminOrAppUser,) permission_classes = (IsOrgAdminOrAppUser,)
serializer_class = serializers.ApplicationSerializer serializer_class = serializers.ApplicationSerializer

View File

@ -0,0 +1,12 @@
from django_filters import rest_framework as filters
from .models import Application
from applications import const
class ApplicationFilter(filters.FilterSet):
type = filters.MultipleChoiceFilter(choices=const.ApplicationTypeChoices.choices)
class Meta:
model = Application
fields = ['id', 'name', 'category', 'type', 'comment']

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
from applications.models import Application from applications.models import Application
from applications.filters import ApplicationFilter
from perms.models import ApplicationPermission from perms.models import ApplicationPermission
from perms import serializers from perms import serializers
from ..base import BasePermissionViewSet from ..base import BasePermissionViewSet
@ -12,8 +13,8 @@ class ApplicationPermissionViewSet(BasePermissionViewSet):
""" """
model = ApplicationPermission model = ApplicationPermission
serializer_class = serializers.ApplicationPermissionSerializer serializer_class = serializers.ApplicationPermissionSerializer
filterset_fields = ['name', 'category', 'type'] filterset_class = ApplicationFilter
search_fields = filterset_fields search_fields = ['name', 'category', 'type']
custom_filter_fields = BasePermissionViewSet.custom_filter_fields + [ custom_filter_fields = BasePermissionViewSet.custom_filter_fields + [
'application_id', 'application' 'application_id', 'application'
] ]

View File

@ -3,6 +3,7 @@
from rest_framework.generics import ListAPIView from rest_framework.generics import ListAPIView
from rest_framework.response import Response from rest_framework.response import Response
from applications.filters import ApplicationFilter
from common.mixins.api import CommonApiMixin from common.mixins.api import CommonApiMixin
from applications.api.mixin import ( from applications.api.mixin import (
SerializeApplicationToTreeNodeMixin SerializeApplicationToTreeNodeMixin
@ -25,7 +26,7 @@ __all__ = [
class AllGrantedApplicationsMixin(CommonApiMixin, ListAPIView): class AllGrantedApplicationsMixin(CommonApiMixin, ListAPIView):
only_fields = serializers.ApplicationGrantedSerializer.Meta.only_fields only_fields = serializers.ApplicationGrantedSerializer.Meta.only_fields
serializer_class = serializers.ApplicationGrantedSerializer serializer_class = serializers.ApplicationGrantedSerializer
filterset_fields = ['id', 'name', 'category', 'type', 'comment'] filterset_class = ApplicationFilter
search_fields = ['name', 'comment'] search_fields = ['name', 'comment']
user: None user: None