diff --git a/apps/perms/api/user_permission/user_permission_nodes_with_assets.py b/apps/perms/api/user_permission/user_permission_nodes_with_assets.py index 14424ba8b..fc6aa17fe 100644 --- a/apps/perms/api/user_permission/user_permission_nodes_with_assets.py +++ b/apps/perms/api/user_permission/user_permission_nodes_with_assets.py @@ -18,6 +18,7 @@ from ...utils.user_asset_permission import ( from assets.models import Asset, FavoriteAsset from assets.api import SerializeToTreeNodeMixin +from orgs.utils import tmp_to_root_org from ...hands import Node logger = get_logger(__name__) @@ -26,6 +27,7 @@ logger = get_logger(__name__) class MyGrantedNodesWithAssetsAsTreeApi(SerializeToTreeNodeMixin, ListAPIView): permission_classes = (IsValidUser,) + @tmp_to_root_org() def list(self, request: Request, *args, **kwargs): """ 此算法依赖 UserGrantedMappingNode diff --git a/apps/perms/utils/user_asset_permission.py b/apps/perms/utils/user_asset_permission.py index 700c5fe3f..b6f534430 100644 --- a/apps/perms/utils/user_asset_permission.py +++ b/apps/perms/utils/user_asset_permission.py @@ -1,5 +1,5 @@ from functools import reduce, wraps -from operator import or_, and_ +from operator import or_ from uuid import uuid4 import threading import inspect @@ -229,9 +229,13 @@ def set_node_granted_assets_amount(user, node, asset_perms_id=None): setattr(node, TMP_GRANTED_ASSETS_AMOUNT_FIELD, assets_amount) +@tmp_to_root_org() def rebuild_user_mapping_nodes(user): logger.info(f'>>> {dt_formater(now())} start rebuild {user} mapping nodes') asset_perms_id = get_user_all_assetpermissions_id(user) + if not asset_perms_id: + # 没有授权直接返回 + return tmp_nodes = compute_tmp_mapping_node_from_perm(user, asset_perms_id) for _node in tmp_nodes: set_node_granted_assets_amount(user, _node, asset_perms_id)