From ffe9dd1f956f20bba2f9ef3f19e891a1bc3b5d46 Mon Sep 17 00:00:00 2001 From: Bai Date: Wed, 15 Mar 2023 14:46:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E6=A8=A1=E7=89=88=E5=8F=AF=E4=BB=A5=E6=A0=B9=E6=8D=AE=20protoc?= =?UTF-8?q?ols=20=E8=BF=87=E6=BB=A4=20secret=5Ftype=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/accounts/api/account/template.py | 34 +++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/apps/accounts/api/account/template.py b/apps/accounts/api/account/template.py index de4c4991e..3bbe902ae 100644 --- a/apps/accounts/api/account/template.py +++ b/apps/accounts/api/account/template.py @@ -1,15 +1,39 @@ -from rbac.permissions import RBACPermission -from common.permissions import UserConfirmation, ConfirmType +from django_filters import rest_framework as drf_filters -from common.views.mixins import RecordViewLogMixin -from orgs.mixins.api import OrgBulkModelViewSet +from assets.const import Protocol from accounts import serializers from accounts.models import AccountTemplate +from orgs.mixins.api import OrgBulkModelViewSet +from rbac.permissions import RBACPermission +from common.permissions import UserConfirmation, ConfirmType +from common.views.mixins import RecordViewLogMixin +from common.drf.filters import BaseFilterSet + + +class AccountTemplateFilterSet(BaseFilterSet): + protocols = drf_filters.CharFilter(method='filter_protocols') + + class Meta: + model = AccountTemplate + fields = ('username', 'name') + + @staticmethod + def filter_protocols(queryset, name, value): + secret_types = set() + protocols = value.split(',') + protocol_secret_type_map = Protocol.settings() + for p in protocols: + if p not in protocol_secret_type_map: + continue + _st = protocol_secret_type_map[p].get('secret_types', []) + secret_types.update(_st) + queryset = queryset.filter(secret_type__in=secret_types) + return queryset class AccountTemplateViewSet(OrgBulkModelViewSet): model = AccountTemplate - filterset_fields = ("username", 'name') + filterset_class = AccountTemplateFilterSet search_fields = ('username', 'name') serializer_classes = { 'default': serializers.AccountTemplateSerializer