diff --git a/apps/applications/api/application.py b/apps/applications/api/application.py index 867a8ddd3..1933f6280 100644 --- a/apps/applications/api/application.py +++ b/apps/applications/api/application.py @@ -1,11 +1,11 @@ # coding: utf-8 # - from orgs.mixins.api import OrgBulkModelViewSet from ..hands import IsOrgAdminOrAppUser from .. import serializers from ..models import Application +from applications.filters import ApplicationFilter __all__ = ['ApplicationViewSet'] @@ -13,7 +13,7 @@ __all__ = ['ApplicationViewSet'] class ApplicationViewSet(OrgBulkModelViewSet): model = Application - filterset_fields = ('name', 'type', 'category') - search_fields = filterset_fields + filterset_class = ApplicationFilter + search_fields = ('name', 'type', 'category') permission_classes = (IsOrgAdminOrAppUser,) serializer_class = serializers.ApplicationSerializer diff --git a/apps/applications/filters.py b/apps/applications/filters.py new file mode 100644 index 000000000..948fa9187 --- /dev/null +++ b/apps/applications/filters.py @@ -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'] diff --git a/apps/perms/api/application/application_permission.py b/apps/perms/api/application/application_permission.py index e7b449b5a..700b5384d 100644 --- a/apps/perms/api/application/application_permission.py +++ b/apps/perms/api/application/application_permission.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # from applications.models import Application +from applications.filters import ApplicationFilter from perms.models import ApplicationPermission from perms import serializers from ..base import BasePermissionViewSet @@ -12,8 +13,8 @@ class ApplicationPermissionViewSet(BasePermissionViewSet): """ model = ApplicationPermission serializer_class = serializers.ApplicationPermissionSerializer - filterset_fields = ['name', 'category', 'type'] - search_fields = filterset_fields + filterset_class = ApplicationFilter + search_fields = ['name', 'category', 'type'] custom_filter_fields = BasePermissionViewSet.custom_filter_fields + [ 'application_id', 'application' ] diff --git a/apps/perms/api/application/user_permission/user_permission_applications.py b/apps/perms/api/application/user_permission/user_permission_applications.py index 6916f6f29..5e5c27d22 100644 --- a/apps/perms/api/application/user_permission/user_permission_applications.py +++ b/apps/perms/api/application/user_permission/user_permission_applications.py @@ -3,6 +3,7 @@ from rest_framework.generics import ListAPIView from rest_framework.response import Response +from applications.filters import ApplicationFilter from common.mixins.api import CommonApiMixin from applications.api.mixin import ( SerializeApplicationToTreeNodeMixin @@ -25,7 +26,7 @@ __all__ = [ class AllGrantedApplicationsMixin(CommonApiMixin, ListAPIView): only_fields = serializers.ApplicationGrantedSerializer.Meta.only_fields serializer_class = serializers.ApplicationGrantedSerializer - filterset_fields = ['id', 'name', 'category', 'type', 'comment'] + filterset_class = ApplicationFilter search_fields = ['name', 'comment'] user: None