diff --git a/apps/assets/api/account/account.py b/apps/assets/api/account/account.py index e22b13c16..714d3d5a2 100644 --- a/apps/assets/api/account/account.py +++ b/apps/assets/api/account/account.py @@ -27,8 +27,16 @@ class AccountViewSet(OrgBulkModelViewSet): rbac_perms = { 'verify': 'assets.test_account', 'partial_update': 'assets.change_accountsecret', + 'su_from_accounts': 'assets.view_account', } + @action(methods=['get'], detail=True, url_path='su-from-accounts') + def su_from_accounts(self, request, *args, **kwargs): + account = super().get_object() + accounts = account.get_su_from_accounts() + serializer = serializers.AccountSerializer(accounts, many=True) + return Response(data=serializer.data) + @action(methods=['post'], detail=True, url_path='verify') def verify_account(self, request, *args, **kwargs): account = super().get_object() diff --git a/apps/assets/models/account.py b/apps/assets/models/account.py index 930fd7882..7703ac1e6 100644 --- a/apps/assets/models/account.py +++ b/apps/assets/models/account.py @@ -87,6 +87,9 @@ class Account(AbsConnectivity, BaseAccount): """ @USER 动态用户的账号(self) """ return cls(name=cls.AliasAccount.USER.label, username=cls.AliasAccount.USER.value) + def get_su_from_accounts(self): + return self.asset.accounts.exclude(id=self.id) + class AccountTemplate(BaseAccount): class Meta: