From 935947c97a9df45aee121db8cc41f30340c77d77 Mon Sep 17 00:00:00 2001 From: xinwen Date: Fri, 5 Mar 2021 10:50:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=94=A8=E6=88=B7=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E7=9A=84=E8=B5=84=E4=BA=A7=E6=8E=88=E6=9D=83=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=85=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/filters.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/perms/filters.py b/apps/perms/filters.py index de7d12ebe..c52c11c5a 100644 --- a/apps/perms/filters.py +++ b/apps/perms/filters.py @@ -58,12 +58,19 @@ class PermissionBaseFilter(BaseFilterSet): return queryset if not user: return queryset.none() - if is_query_all: + + if not is_query_all: queryset = queryset.filter(users=user) return queryset groups = list(user.groups.all().values_list('id', flat=True)) + + user_asset_perm_ids = AssetPermission.objects.filter(users=user).distinct().values_list('id', flat=True) + group_asset_perm_ids = AssetPermission.objects.filter(user_groups__in=groups).distinct().values_list('id', flat=True) + + asset_perm_ids = {*user_asset_perm_ids, *group_asset_perm_ids} + queryset = queryset.filter( - Q(users=user) | Q(user_groups__in=groups) + id__in=asset_perm_ids ).distinct() return queryset