From 56c94d7b3ca90bb7a99eb64427f510cfb66deec3 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Wed, 21 May 2025 22:34:10 +0800 Subject: [PATCH] fix: The account suggestions api cannot find the account associated with the DS --- apps/accounts/api/account/account.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/accounts/api/account/account.py b/apps/accounts/api/account/account.py index 8b39db771..12052e497 100644 --- a/apps/accounts/api/account/account.py +++ b/apps/accounts/api/account/account.py @@ -78,18 +78,25 @@ class AccountViewSet(OrgBulkModelViewSet): permission_classes=[IsValidUser] ) def username_suggestions(self, request, *args, **kwargs): - asset_ids = request.data.get('assets', []) + raw_asset_ids = request.data.get('assets', []) node_ids = request.data.get('nodes', []) username = request.data.get('username', '') - accounts = Account.objects.all() + asset_ids = set(raw_asset_ids) + if node_ids: nodes = Node.objects.filter(id__in=node_ids) - node_asset_ids = Node.get_nodes_all_assets(*nodes).values_list('id', flat=True) - asset_ids.extend(node_asset_ids) + node_asset_qs = Node.get_nodes_all_assets(*nodes).values_list('id', flat=True) + asset_ids |= {str(u) for u in node_asset_qs} if asset_ids: - accounts = accounts.filter(asset_id__in=list(set(asset_ids))) + through = Asset.directory_services.through + ds_qs = through.objects.filter(asset_id__in=asset_ids) \ + .values_list('directoryservice_id', flat=True) + asset_ids |= {str(u) for u in ds_qs} + accounts = Account.objects.filter(asset_id__in=list(asset_ids)) + else: + accounts = Account.objects.all() if username: accounts = accounts.filter(username__icontains=username)