From 1605a57df6e99fded90bc0f3c97b743a3e3a9398 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 17 Aug 2021 14:16:41 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E5=A4=8D=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E9=80=89=E6=8B=A9=E9=83=A8=E5=88=86=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/applications/api/account.py | 5 +++++ apps/common/drf/filters.py | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/applications/api/account.py b/apps/applications/api/account.py index 279ac926c..483836f16 100644 --- a/apps/applications/api/account.py +++ b/apps/applications/api/account.py @@ -63,6 +63,11 @@ class ApplicationAccountViewSet(JMSModelViewSet): queryset_list = unique(queryset, key=lambda x: (x['app'], x['systemuser'])) return queryset_list + @staticmethod + def filter_spm_queryset(resource_ids, queryset): + queryset = queryset.filter(uid__in=resource_ids) + return queryset + class ApplicationAccountSecretViewSet(ApplicationAccountViewSet): serializer_class = serializers.ApplicationAccountSecretSerializer diff --git a/apps/common/drf/filters.py b/apps/common/drf/filters.py index 609cb5ab0..c2fd94e3f 100644 --- a/apps/common/drf/filters.py +++ b/apps/common/drf/filters.py @@ -112,7 +112,10 @@ class IDSpmFilter(filters.BaseFilterBackend): resource_ids = cache.get(cache_key) if resource_ids is None or not isinstance(resource_ids, list): return queryset - queryset = queryset.filter(id__in=resource_ids) + if hasattr(view, 'filter_spm_queryset'): + queryset = view.filter_spm_queryset(resource_ids, queryset) + else: + queryset = queryset.filter(id__in=resource_ids) return queryset