From 5e4b3e924fb28a05683d4b257c5bb0e505679887 Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 30 Jul 2021 17:19:07 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/applications/api/account.py | 6 ++---- apps/applications/models/application.py | 5 ++++- apps/applications/serializers/application.py | 16 ++++++++-------- .../api/application/application_permission.py | 17 ++++++++++------- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/apps/applications/api/account.py b/apps/applications/api/account.py index 87308e44c..30cf77d51 100644 --- a/apps/applications/api/account.py +++ b/apps/applications/api/account.py @@ -31,7 +31,7 @@ class ApplicationAccountViewSet(JMSModelViewSet): permission_classes = (IsOrgAdmin, ) search_fields = ['username', 'app_name'] filterset_class = AccountFilterSet - filterset_fields = ['username', 'app_name', 'app_type', 'app_category'] + filterset_fields = ['username', 'app_name', 'type', 'category'] serializer_class = serializers.ApplicationAccountSerializer http_method_names = ['get', 'put', 'patch', 'options'] @@ -47,10 +47,8 @@ class ApplicationAccountViewSet(JMSModelViewSet): .annotate(password=F('system_users__password')) \ .annotate(app=F('applications')) \ .annotate(app_name=F("applications__name")) \ - .annotate(app_category=F("applications__category")) \ - .annotate(app_type=F("applications__type"))\ .values('username', 'password', 'systemuser', 'systemuser_display', - 'app', 'app_name', 'app_category', 'app_type', 'uid') + 'app', 'app_name', 'category', 'type', 'uid') return queryset def get_object(self): diff --git a/apps/applications/models/application.py b/apps/applications/models/application.py index af14950df..7b641b7c4 100644 --- a/apps/applications/models/application.py +++ b/apps/applications/models/application.py @@ -1,7 +1,6 @@ from collections import defaultdict from django.db import models -from django.db.models import Count from django.utils.translation import ugettext_lazy as _ from orgs.mixins.models import OrgModelMixin @@ -36,6 +35,10 @@ class ApplicationTreeNodeMixin: 'iconSkin': '', 'meta': { 'type': tp, + 'data': { + 'name': c.name, + 'value': c.value + } } } return TreeNode(**data) diff --git a/apps/applications/serializers/application.py b/apps/applications/serializers/application.py index 8e0c414a1..25f2b448d 100644 --- a/apps/applications/serializers/application.py +++ b/apps/applications/serializers/application.py @@ -75,10 +75,10 @@ class ApplicationAccountSerializer(serializers.Serializer): app = serializers.ReadOnlyField(label=_('App')) uid = serializers.ReadOnlyField(label=_("Union id")) app_name = serializers.ReadOnlyField(label=_("Application name"), read_only=True) - app_category = serializers.ChoiceField(label=_('Category'), choices=const.AppCategory.choices, read_only=True) - app_category_display = serializers.SerializerMethodField(label=_('Category')) - app_type = serializers.ChoiceField(label=_('Type'), choices=const.AppType.choices, read_only=True) - app_type_display = serializers.SerializerMethodField(label=_('Type')) + category = serializers.ChoiceField(label=_('Category'), choices=const.AppCategory.choices, read_only=True) + category_display = serializers.SerializerMethodField(label=_('Category')) + type = serializers.ChoiceField(label=_('Type'), choices=const.AppType.choices, read_only=True) + type_display = serializers.SerializerMethodField(label=_('Type')) category_mapper = dict(const.AppCategory.choices) type_mapper = dict(const.AppType.choices) @@ -89,11 +89,11 @@ class ApplicationAccountSerializer(serializers.Serializer): def update(self, instance, validated_data): pass - def get_app_category_display(self, obj): - return self.category_mapper.get(obj['app_category']) + def get_category_display(self, obj): + return self.category_mapper.get(obj['category']) - def get_app_type_display(self, obj): - return self.type_mapper.get(obj['app_type']) + def get_type_display(self, obj): + return self.type_mapper.get(obj['type']) class ApplicationAccountSecretSerializer(ApplicationAccountSerializer): diff --git a/apps/perms/api/application/application_permission.py b/apps/perms/api/application/application_permission.py index ce99120a2..c03bf9150 100644 --- a/apps/perms/api/application/application_permission.py +++ b/apps/perms/api/application/application_permission.py @@ -19,7 +19,7 @@ class ApplicationPermissionViewSet(BasePermissionViewSet): } search_fields = ['name', 'category', 'type'] custom_filter_fields = BasePermissionViewSet.custom_filter_fields + [ - 'application_id', 'application' + 'application_id', 'application', 'app', 'app_name' ] def get_queryset(self): @@ -29,12 +29,15 @@ class ApplicationPermissionViewSet(BasePermissionViewSet): 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) + app_id = self.request.query_params.get('application_id') or \ + self.request.query_params.get('app') + app_name = self.request.query_params.get('application') or \ + self.request.query_params.get('app_name') + + if app_id: + applications = Application.objects.filter(pk=app_id) + elif app_name: + applications = Application.objects.filter(name=app_name) else: return queryset if not applications: