11# coding=utf-8
22"""
3- @project: MaxKB
4- @Author:虎虎
5- @file: resource_mapping.py
6- @date:2025/12/25 15:28
7- @desc:
3+ @project: MaxKB
4+ @Author:虎虎
5+ @file: resource_mapping.py
6+ @date:2025/12/25 15:28
7+ @desc:
88"""
99
1010from django .utils .translation import gettext_lazy as _
1616from common .auth import TokenAuth
1717from common .auth .authentication import has_permissions
1818from common .auth .constants .compare_constants import CompareConstants
19- from common .auth .constants .group_constants import Group
20- from common .auth .constants .operate_constants import Operate
19+ from common .auth .constants .permission_constants import PermissionConstants
2120from common .auth .constants .role_constants import RoleConstants
2221from common .auth .struct .aggregate_permission import ViewPermission
23- from common .auth .struct .permission import Permission
2422from system_manage .api .resource_mapping import ResourceMappingAPI
2523from system_manage .serializers .resource_mapping_serializers import ResourceMappingSerializer , MappingResourceSerializer
2624
@@ -29,65 +27,83 @@ class ResourceMappingView(APIView):
2927 authentication_classes = [TokenAuth ]
3028
3129 @extend_schema (
32- methods = [' GET' ],
33- description = _ (' Retrieve the pagination list of resource relationships' ),
34- operation_id = _ (' Retrieve the pagination list of resource relationships' ), # type: ignore
30+ methods = [" GET" ],
31+ description = _ (" Retrieve the pagination list of resource relationships" ),
32+ operation_id = _ (" Retrieve the pagination list of resource relationships" ), # type: ignore
3533 responses = ResourceMappingAPI .get_response (),
3634 parameters = ResourceMappingAPI .get_parameters (),
37- tags = [_ (' Resources mapping' )] # type: ignore
35+ tags = [_ (" Resources mapping" )], # type: ignore
3836 )
3937 @has_permissions (
40- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
41- operate = Operate .RELATE_VIEW ,
42- resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} :ROLE/WORKSPACE_MANAGE" ),
43- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
44- operate = Operate .RELATE_VIEW ,
45- resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('resource_id' )} " ),
46- ViewPermission ([RoleConstants .USER .get_workspace_role ()],
47- [lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
48- operate = Operate .SELF ,
49- resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('resource_id' )} " )],
50- compare = CompareConstants .AND ),
51- RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
38+ lambda r , kwargs : PermissionConstants [
39+ f"{ kwargs .get ('resource' )} _RELATE_RESOURCE_VIEW"
40+ ].get_workspace_permission_workspace_manage_role ()(r , kwargs ),
41+ lambda r , kwargs : PermissionConstants [
42+ f"{ kwargs .get ('resource' )} _RELATE_RESOURCE_VIEW"
43+ ]._build_workspace_permission (resource_id_key = "resource_id" )(r , kwargs ),
44+ ViewPermission (
45+ [RoleConstants .USER .get_workspace_role ()],
46+ [
47+ lambda r , kwargs : PermissionConstants [kwargs .get ("resource" )]._build_workspace_permission (
48+ resource_id_key = "resource_id"
49+ )(r , kwargs )
50+ ],
51+ compare = CompareConstants .AND ,
52+ ),
53+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role (),
54+ )
5255 def get (self , request : Request , workspace_id : str , resource : str , resource_id : str , current_page , page_size ):
53- return result .success (ResourceMappingSerializer ({
54- 'resource' : resource ,
55- 'resource_id' : resource_id ,
56- 'resource_name' : request .query_params .get ('resource_name' ),
57- 'user_name' : request .query_params .get ('user_name' ),
58- 'source_type' : request .query_params .getlist ('source_type[]' ),
59- }).page (current_page , page_size ))
56+ return result .success (
57+ ResourceMappingSerializer (
58+ {
59+ "resource" : resource ,
60+ "resource_id" : resource_id ,
61+ "resource_name" : request .query_params .get ("resource_name" ),
62+ "user_name" : request .query_params .get ("user_name" ),
63+ "source_type" : request .query_params .getlist ("source_type[]" ),
64+ }
65+ ).page (current_page , page_size )
66+ )
6067
6168
6269class MappingResourceView (APIView ):
6370 authentication_classes = [TokenAuth ]
6471
6572 @extend_schema (
66- methods = [' GET' ],
67- description = _ (' Retrieve the pagination list of resource relationships' ),
68- operation_id = _ (' Retrieve the pagination list of resource relationships' ), # type: ignore
73+ methods = [" GET" ],
74+ description = _ (" Retrieve the pagination list of resource relationships" ),
75+ operation_id = _ (" Retrieve the pagination list of resource relationships" ), # type: ignore
6976 responses = ResourceMappingAPI .get_response (),
7077 parameters = ResourceMappingAPI .get_parameters (),
71- tags = [_ (' Mapping Resource' )] # type: ignore
78+ tags = [_ (" Mapping Resource" )], # type: ignore
7279 )
7380 @has_permissions (
74- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
75- operate = Operate .RELATE_VIEW ,
76- resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} :ROLE/WORKSPACE_MANAGE" ),
77- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
78- operate = Operate .RELATE_VIEW ,
79- resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('resource_id' )} " ),
80- ViewPermission ([RoleConstants .USER .get_workspace_role ()],
81- [lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
82- operate = Operate .SELF ,
83- resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('resource_id' )} " )],
84- compare = CompareConstants .AND ),
85- RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
81+ lambda r , kwargs : PermissionConstants [
82+ f"{ kwargs .get ('resource' )} _RELATE_RESOURCE_VIEW"
83+ ].get_workspace_permission_workspace_manage_role ()(r , kwargs ),
84+ lambda r , kwargs : PermissionConstants [
85+ f"{ kwargs .get ('resource' )} _RELATE_RESOURCE_VIEW"
86+ ]._build_workspace_permission (resource_id_key = "resource_id" )(r , kwargs ),
87+ ViewPermission (
88+ [RoleConstants .USER .get_workspace_role ()],
89+ [
90+ lambda r , kwargs : PermissionConstants [kwargs .get ("resource" )]._build_workspace_permission (
91+ resource_id_key = "resource_id"
92+ )(r , kwargs )
93+ ],
94+ compare = CompareConstants .AND ,
95+ ),
96+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role (),
97+ )
8698 def get (self , request : Request , workspace_id : str , resource : str , resource_id : str , current_page , page_size ):
87- return result .success (MappingResourceSerializer ({
88- 'resource' : resource ,
89- 'resource_id' : resource_id ,
90- 'resource_name' : request .query_params .get ('resource_name' ),
91- 'user_name' : request .query_params .get ('user_name' ),
92- 'target_type' : request .query_params .getlist ('target_type[]' ),
93- }).page (current_page , page_size ))
99+ return result .success (
100+ MappingResourceSerializer (
101+ {
102+ "resource" : resource ,
103+ "resource_id" : resource_id ,
104+ "resource_name" : request .query_params .get ("resource_name" ),
105+ "user_name" : request .query_params .get ("user_name" ),
106+ "target_type" : request .query_params .getlist ("target_type[]" ),
107+ }
108+ ).page (current_page , page_size )
109+ )
0 commit comments