From 1e0489bb96ccf78a2181e3b59941cee844e4ee04 Mon Sep 17 00:00:00 2001 From: feng <1304903146@qq.com> Date: Wed, 27 Sep 2023 14:13:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=B4=A6=E5=8F=B7=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=8C=87=E5=AE=9A=E8=B4=A6=E5=8F=B7api=20?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/accounts/api/account/account.py | 32 +++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/apps/accounts/api/account/account.py b/apps/accounts/api/account/account.py index 740ccf041..1fd2b5185 100644 --- a/apps/accounts/api/account/account.py +++ b/apps/accounts/api/account/account.py @@ -6,8 +6,8 @@ from rest_framework.status import HTTP_200_OK from accounts import serializers from accounts.filters import AccountFilterSet -from accounts.models import Account from accounts.mixins import AccountRecordViewLogMixin +from accounts.models import Account from assets.models import Asset, Node from common.api.mixin import ExtraFilterFieldsMixin from common.permissions import UserConfirmation, ConfirmType, IsValidUser @@ -57,19 +57,27 @@ class AccountViewSet(OrgBulkModelViewSet): permission_classes=[IsValidUser] ) def username_suggestions(self, request, *args, **kwargs): - asset_ids = request.data.get('assets') - node_ids = request.data.get('nodes') - username = request.data.get('username') + asset_ids = request.data.get('assets', []) + node_ids = request.data.get('nodes', []) + username = request.data.get('username', '') - assets = Asset.objects.all() - if asset_ids: - assets = assets.filter(id__in=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) - assets = assets.filter(id__in=set(list(asset_ids) + list(node_asset_ids))) + if not asset_ids and not node_ids: + accounts = Account.objects.all() + else: + node_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) + asset_ids = list(set(asset_ids)) + + if not asset_ids: + accounts = Account.objects.all() + else: + accounts = Account.objects.filter(asset_id__in=asset_ids) - accounts = Account.objects.filter(asset__in=assets) if username: accounts = accounts.filter(username__icontains=username) usernames = list(accounts.values_list('username', flat=True).distinct()[:10])