perf: Filter effective

pull/16153/head
feng 2025-10-15 16:45:02 +08:00 committed by feng626
parent 8f0a41b1a8
commit 245e2dab66
1 changed files with 5 additions and 3 deletions

View File

@ -222,13 +222,15 @@ class AssetPermissionFilter(PermissionBaseFilter):
have_asset_q = Q(assets__isnull=False) | Q(nodes__isnull=False) have_asset_q = Q(assets__isnull=False) | Q(nodes__isnull=False)
have_action_q = Q(actions__gt=0) have_action_q = Q(actions__gt=0)
valid_ids = AssetPermission.objects.valid().values_list('pk', flat=True)
queryset = queryset.filter(have_user_q & have_asset_q & have_action_q) queryset = queryset.filter(have_user_q & have_asset_q & have_action_q)
queryset &= AssetPermission.objects.valid() queryset = queryset.filter(pk__in=valid_ids)
else: else:
not_have_user_q = Q(users__isnull=True) & Q(user_groups__isnull=True) not_have_user_q = Q(users__isnull=True) & Q(user_groups__isnull=True)
not_have_asset_q = Q(assets__isnull=True) & Q(nodes__isnull=True) not_have_asset_q = Q(assets__isnull=True) & Q(nodes__isnull=True)
not_have_action_q = Q(actions=0) not_have_action_q = Q(actions=0)
queryset = queryset.filter(not_have_user_q | not_have_asset_q | not_have_action_q) invalid_ids = AssetPermission.objects.invalid().values_list('pk', flat=True)
queryset |= AssetPermission.objects.invalid() condition_q = not_have_user_q | not_have_asset_q | not_have_action_q | Q(pk__in=invalid_ids)
queryset = queryset.filter(condition_q)
return queryset return queryset