diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index d47b00bf9..296e0e5d4 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -4,7 +4,7 @@ from functools import reduce from django.db import models from django.utils.translation import ugettext_lazy as _ -from common.utils import date_expired_default +from common.utils import date_expired_default, set_or_append_attr_bulk from orgs.mixins import OrgModelMixin from .base import BasePermission @@ -79,6 +79,14 @@ class AssetPermission(BasePermission): def get_queryset_with_prefetch(cls): return cls.objects.all().valid().prefetch_related('nodes', 'assets', 'system_users') + def get_all_assets(self): + assets = set(self.assets.all()) + for node in self.nodes.all(): + _assets = node.get_all_assets() + set_or_append_attr_bulk(_assets, 'inherit', node.value) + assets.update(set(_assets)) + return assets + class NodePermission(OrgModelMixin): id = models.UUIDField(default=uuid.uuid4, primary_key=True) diff --git a/apps/perms/views/asset_permission.py b/apps/perms/views/asset_permission.py index cf4b6a1ed..2981c9910 100644 --- a/apps/perms/views/asset_permission.py +++ b/apps/perms/views/asset_permission.py @@ -155,7 +155,7 @@ class AssetPermissionAssetView(PermissionsMixin, permission_classes = [IsOrgAdmin] def get(self, request, *args, **kwargs): - self.object = self.get_object(queryset = AssetPermission.objects.all()) + self.object = self.get_object(queryset=AssetPermission.objects.all()) return super().get(request, *args, **kwargs) def get_queryset(self):