From 8231f727c2c3f84bc8aff739c344ae11b9d354d9 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Tue, 1 Nov 2022 15:04:13 +0800 Subject: [PATCH] perf: history account --- apps/assets/api/account/account.py | 24 +++++++++++++++--------- apps/assets/models/account.py | 2 +- apps/assets/urls/api_urls.py | 1 + 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/apps/assets/api/account/account.py b/apps/assets/api/account/account.py index 31aaccb96..3275dc67d 100644 --- a/apps/assets/api/account/account.py +++ b/apps/assets/api/account/account.py @@ -1,6 +1,6 @@ from rest_framework.decorators import action from rest_framework.response import Response -from rest_framework.generics import CreateAPIView, get_object_or_404 +from rest_framework.generics import CreateAPIView, ListAPIView from orgs.mixins.api import OrgBulkModelViewSet from rbac.permissions import RBACPermission @@ -13,7 +13,7 @@ from assets.filters import AccountFilterSet from assets.tasks.account_connectivity import test_accounts_connectivity_manual from assets import serializers -__all__ = ['AccountViewSet', 'AccountSecretsViewSet', 'AccountTaskCreateAPI'] +__all__ = ['AccountViewSet', 'AccountSecretsViewSet', 'AccountTaskCreateAPI', 'AccountHistoriesSecretAPI'] class AccountViewSet(OrgBulkModelViewSet): @@ -42,7 +42,6 @@ class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): """ serializer_classes = { 'default': serializers.AccountSecretSerializer, - 'histories': serializers.AccountHistorySerializer, } http_method_names = ['get', 'options'] # Todo: 记得打开 @@ -50,14 +49,21 @@ class AccountSecretsViewSet(RecordViewLogMixin, AccountViewSet): rbac_perms = { 'list': 'assets.view_accountsecret', 'retrieve': 'assets.view_accountsecret', - 'histories': ['assets.view_accountsecret'], } - @action(methods=['get'], detail=True, url_path='histories') - def histories(self, request, *args, **kwargs): - account = get_object_or_404(self.get_queryset(), **kwargs) - self.queryset = account.history.all() - return super().list(request, *args, **kwargs) + +class AccountHistoriesSecretAPI(RecordViewLogMixin, ListAPIView): + model = Account.history.model + serializer_class = serializers.AccountHistorySerializer + http_method_names = ['get', 'options'] + # Todo: 记得打开 + # permission_classes = [RBACPermission, UserConfirmation.require(ConfirmType.MFA)] + rbac_perms = { + 'list': 'assets.view_accountsecret', + } + + def get_queryset(self): + return self.model.objects.filter(id=self.kwargs.get('pk')) class AccountTaskCreateAPI(CreateAPIView): diff --git a/apps/assets/models/account.py b/apps/assets/models/account.py index 70ddc81b0..c2bb40a99 100644 --- a/apps/assets/models/account.py +++ b/apps/assets/models/account.py @@ -71,7 +71,7 @@ class Account(AbsConnectivity, BaseAccount): return self.asset.platform def __str__(self): - return '{}@{}'.format(self.username, self.asset.name) + return '{}'.format(self.username) @classmethod def get_input_account(cls): diff --git a/apps/assets/urls/api_urls.py b/apps/assets/urls/api_urls.py index 688319ef6..f1c286054 100644 --- a/apps/assets/urls/api_urls.py +++ b/apps/assets/urls/api_urls.py @@ -37,6 +37,7 @@ urlpatterns = [ path('assets//perm-user-groups//permissions/', api.AssetPermUserGroupPermissionsListApi.as_view(), name='asset-perm-user-group-permission-list'), path('accounts/tasks/', api.AccountTaskCreateAPI.as_view(), name='account-task-create'), + path('account-secrets//histories/', api.AccountHistoriesSecretAPI.as_view(), name='account-secret-history'), path('nodes/category/tree/', api.CategoryTreeApi.as_view(), name='asset-category-tree'), path('nodes/tree/', api.NodeListAsTreeApi.as_view(), name='node-tree'),