From aa2255a87e3a2a4fa7b742e6b60afd9ca5c5665f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E5=B9=BF?= Date: Wed, 5 Feb 2020 12:10:24 +0800 Subject: [PATCH] =?UTF-8?q?[Update]=20sql=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7=E8=B5=84=E4=BA=A7=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=97=B6=EF=BC=8C=E4=BD=BF=E7=94=A8union=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3or=20(#3681)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/utils/asset_permission.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/apps/perms/utils/asset_permission.py b/apps/perms/utils/asset_permission.py index 3ba5c68d6..c0f46f127 100644 --- a/apps/perms/utils/asset_permission.py +++ b/apps/perms/utils/asset_permission.py @@ -25,12 +25,14 @@ __all__ = [ def get_user_permissions(user, include_group=True): + permissions = AssetPermission.get_queryset_with_prefetch().filter(users=user) if include_group: groups = user.groups.all() - arg = Q(users=user) | Q(user_groups__in=groups) - else: - arg = Q(users=user) - return AssetPermission.get_queryset_with_prefetch().filter(arg) + permissions_groups = AssetPermission.get_queryset_with_prefetch().filter( + user_groups__in=groups + ) + permissions = permissions.union(permissions_groups) + return permissions def get_user_group_permissions(user_group): @@ -40,12 +42,14 @@ def get_user_group_permissions(user_group): def get_asset_permissions(asset, include_node=True): + permissions = AssetPermission.get_queryset_with_prefetch().filter(asset=asset) if include_node: nodes = asset.get_all_nodes(flat=True) - arg = Q(assets=asset) | Q(nodes__in=nodes) - else: - arg = Q(assets=asset) - return AssetPermission.objects.valid().filter(arg) + permissions_nodes = AssetPermission.get_queryset_with_prefetch().filter( + nodes__in=nodes + ) + permissions = permissions.union(permissions_nodes) + return permissions def get_node_permissions(node):