From c90b9d70dcae7f2ce05de5102c4cb280d8ac1f12 Mon Sep 17 00:00:00 2001 From: xinwen Date: Fri, 30 Oct 2020 12:22:57 +0800 Subject: [PATCH] =?UTF-8?q?perf(perms):=20=E4=BC=98=E5=8C=96=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E8=B5=84=E4=BA=A7=E8=8E=B7=E5=8F=96=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=9A=84=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/utils/asset/permission.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/perms/utils/asset/permission.py b/apps/perms/utils/asset/permission.py index 384fcd25a..54272c50d 100644 --- a/apps/perms/utils/asset/permission.py +++ b/apps/perms/utils/asset/permission.py @@ -11,16 +11,19 @@ logger = get_logger(__file__) def get_asset_system_users_id_with_actions(asset_perm_queryset: BasePermissionQuerySet, asset: Asset): + asset_perms_id = set(asset_perm_queryset.values_list('id', flat=True)) + nodes = asset.get_nodes() node_keys = set() for node in nodes: ancestor_keys = node.get_ancestor_keys(with_self=True) node_keys.update(ancestor_keys) - queryset = asset_perm_queryset.filter( + queryset = AssetPermission.objects.filter(id__in=asset_perms_id).filter( Q(assets=asset) | Q(nodes__key__in=node_keys) ) + asset_protocols = asset.protocols_as_dict.keys() values = queryset.filter( system_users__protocol__in=asset_protocols