mirror of https://github.com/jumpserver/jumpserver
fix: 用户详情页的资产授权列表慢
parent
3e7e01418d
commit
935947c97a
|
@ -58,12 +58,19 @@ class PermissionBaseFilter(BaseFilterSet):
|
||||||
return queryset
|
return queryset
|
||||||
if not user:
|
if not user:
|
||||||
return queryset.none()
|
return queryset.none()
|
||||||
if is_query_all:
|
|
||||||
|
if not is_query_all:
|
||||||
queryset = queryset.filter(users=user)
|
queryset = queryset.filter(users=user)
|
||||||
return queryset
|
return queryset
|
||||||
groups = list(user.groups.all().values_list('id', flat=True))
|
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(
|
queryset = queryset.filter(
|
||||||
Q(users=user) | Q(user_groups__in=groups)
|
id__in=asset_perm_ids
|
||||||
).distinct()
|
).distinct()
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue