From 5067b7635f223e666070c1083ab21a2dce8e8e8d Mon Sep 17 00:00:00 2001 From: wangruidong <940853815@qq.com> Date: Thu, 6 Feb 2025 19:06:18 +0800 Subject: [PATCH] perf: integrations application detail add account tab page --- apps/accounts/api/account/application.py | 8 ++++---- apps/accounts/filters.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/apps/accounts/api/account/application.py b/apps/accounts/api/account/application.py index fad9f1f68..057456fa5 100644 --- a/apps/accounts/api/account/application.py +++ b/apps/accounts/api/account/application.py @@ -26,7 +26,7 @@ class IntegrationApplicationViewSet(OrgBulkModelViewSet): } rbac_perms = { 'get_once_secret': 'accounts.change_integrationapplication', - 'get_account_secret': 'view_integrationapplication', + 'get_account_secret': 'accounts.view_integrationapplication' } @action( @@ -43,7 +43,7 @@ class IntegrationApplicationViewSet(OrgBulkModelViewSet): if os.path.exists(readme_path): with open(readme_path, 'r') as f: readme = f.read() - return Response(data={'readme': readme }) + return Response(data={'readme': readme}) @action( ['GET'], detail=True, url_path='secret', @@ -54,7 +54,8 @@ class IntegrationApplicationViewSet(OrgBulkModelViewSet): secret = instance.get_secret() return Response(data={'id': instance.id, 'secret': secret}) - @action(['GET'], detail=False, url_path='account-secret') + @action(['GET'], detail=False, url_path='account-secret', + permission_classes=[RBACPermission]) def get_account_secret(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.query_params) if not serializer.is_valid(): @@ -71,4 +72,3 @@ class IntegrationApplicationViewSet(OrgBulkModelViewSet): account=f'{account.name}({account.username})', asset=f'{asset.name}({asset.address})', ) return Response(data={'id': request.user.id, 'secret': account.secret}) - diff --git a/apps/accounts/filters.py b/apps/accounts/filters.py index 1123bf712..019c9a93d 100644 --- a/apps/accounts/filters.py +++ b/apps/accounts/filters.py @@ -7,7 +7,7 @@ from django_filters import rest_framework as drf_filters from assets.models import Node from common.drf.filters import BaseFilterSet from common.utils.timezone import local_zero_hour, local_now -from .models import Account, GatheredAccount, ChangeSecretRecord, PushSecretRecord +from .models import Account, GatheredAccount, ChangeSecretRecord, PushSecretRecord, IntegrationApplication class AccountFilterSet(BaseFilterSet): @@ -38,6 +38,7 @@ class AccountFilterSet(BaseFilterSet): risk = drf_filters.CharFilter( method="filter_risk", ) + integrationapplication = drf_filters.CharFilter(method="filter_integrationapplication") long_time_no_change_secret = drf_filters.BooleanFilter(method="filter_long_time") long_time_no_verified = drf_filters.BooleanFilter(method="filter_long_time") @@ -73,6 +74,17 @@ class AccountFilterSet(BaseFilterSet): queryset = queryset.filter(risks__risk=value) return queryset + @staticmethod + def filter_integrationapplication(queryset, name, value): + if not value: + return queryset + + integrationapplication = IntegrationApplication.objects.filter(pk=value).first() + if not integrationapplication: + return IntegrationApplication.objects.none() + queryset = integrationapplication.get_accounts() + return queryset + @staticmethod def filter_latest(queryset, name, value): if not value: