From 7b4d3c44f8eae5b8b1fd19a404a9c8e0f00fcf42 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:05:08 +0800 Subject: [PATCH] fix: Asset perm calculate failed (#13530) Co-authored-by: feng <1304903146@qq.com> Co-authored-by: feng626 <57284900+feng626@users.noreply.github.com> --- apps/assets/models/node.py | 2 +- apps/assets/utils/node.py | 2 ++ apps/perms/utils/user_perm_tree.py | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/assets/models/node.py b/apps/assets/models/node.py index 4f6a2185b..617889992 100644 --- a/apps/assets/models/node.py +++ b/apps/assets/models/node.py @@ -356,7 +356,7 @@ class NodeAllAssetsMappingMixin: node_ids_key = Node.objects.annotate( char_id=output_as_string('id') ).values_list('char_id', 'key') - + node_ids_key = [(str(uuid.UUID(node_id)), node_key) for node_id, node_key in node_ids_key] node_id_ancestor_keys_mapping = { node_id: cls.get_node_ancestor_keys(node_key, with_self=True) for node_id, node_key in node_ids_key diff --git a/apps/assets/utils/node.py b/apps/assets/utils/node.py index c0a28713d..2dbc1e4e3 100644 --- a/apps/assets/utils/node.py +++ b/apps/assets/utils/node.py @@ -1,6 +1,7 @@ # ~*~ coding: utf-8 ~*~ # from collections import defaultdict +from uuid import UUID from common.db.models import output_as_string from common.struct import Stack @@ -133,6 +134,7 @@ class NodeAssetsUtil: mapping = defaultdict(set) for key, asset_id in nodes_assets: + asset_id = str(UUID(asset_id)) mapping[key].add(asset_id) util = cls(nodes, mapping) diff --git a/apps/perms/utils/user_perm_tree.py b/apps/perms/utils/user_perm_tree.py index db0217641..81a72fddc 100644 --- a/apps/perms/utils/user_perm_tree.py +++ b/apps/perms/utils/user_perm_tree.py @@ -274,11 +274,13 @@ class UserPermTreeBuildUtil(object): for key in self.perm_node_keys_for_granted: asset_ids = PermNode.get_all_asset_ids_by_node_key(org_id, key) nodekey_assetid_mapper[key].update(asset_ids) + for asset_id, node_id in self.direct_asset_id_node_id_pairs: node_key = self.perm_nodes_id_key_mapper.get(str(node_id)) if not node_key: continue nodekey_assetid_mapper[node_key].add(asset_id) + util = NodeAssetsUtil(self.perm_nodes, nodekey_assetid_mapper) util.generate()