11# Generated by Django 5.2.6 on 2025-10-11 02:54
2+ from functools import reduce
23
34from django .db import migrations , models
5+ from django .db .models import QuerySet
46
7+ from common .constants .permission_constants import WorkspaceUserRoleMapping
8+ from common .utils .common import group_by
9+ from application .models import ApplicationFolder
10+ from knowledge .models import KnowledgeFolder
11+ from tools .models import ToolFolder
12+ from system_manage .models import WorkspaceUserResourcePermission
13+ from users .models import User
514
6- class Migration (migrations .Migration ):
715
16+ def delete_auth (folder_model ):
17+ QuerySet (WorkspaceUserResourcePermission ).filter (target__in = QuerySet (folder_model ).values_list ('id' )).delete ()
18+
19+
20+ def get_workspace_user_resource_permission_list (auth_target_type , workspace_user_role_mapping_model_workspace_dict ,
21+ folder_model ):
22+ return reduce (lambda x , y : [* x , * y ], [
23+ [WorkspaceUserResourcePermission (target = f .id , workspace_id = f .workspace_id , user_id = wurm .user_id ,
24+ auth_target_type = auth_target_type , auth_type = "RESOURCE_PERMISSION_GROUP" ,
25+ permission_list = ['VIEW' ]) for wurm in
26+ workspace_user_role_mapping_model_workspace_dict .get (f .workspace_id , [])] for f in
27+ QuerySet (folder_model ).all ()], [])
28+
29+
30+ def auth_folder (apps , schema_editor ):
31+ from common .database_model_manage .database_model_manage import DatabaseModelManage
32+ DatabaseModelManage .init ()
33+ workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
34+ if workspace_user_role_mapping_model is None :
35+ workspace_user_role_mapping_model_workspace_dict = {
36+ 'default' : [WorkspaceUserRoleMapping ('default' , '' , u .id ) for u in QuerySet (User ).all ()]}
37+ else :
38+ workspace_user_role_mapping_model_workspace_dict = group_by (
39+ [v for v in {str (wurm .user_id ) + str (wurm .workspace_id ): wurm for wurm in
40+ QuerySet (workspace_user_role_mapping_model )}.values ()],
41+ lambda item : item .workspace_id )
42+
43+ workspace_user_resource_permission_list = get_workspace_user_resource_permission_list ("APPLICATION" ,
44+ workspace_user_role_mapping_model_workspace_dict ,
45+ ApplicationFolder )
46+
47+ workspace_user_resource_permission_list += get_workspace_user_resource_permission_list ("TOOL" ,
48+ workspace_user_role_mapping_model_workspace_dict ,
49+ ToolFolder )
50+
51+ workspace_user_resource_permission_list += get_workspace_user_resource_permission_list ("KNOWLEDGE" ,
52+ workspace_user_role_mapping_model_workspace_dict ,
53+ KnowledgeFolder )
54+ delete_auth (ApplicationFolder )
55+ delete_auth (ToolFolder )
56+ delete_auth (KnowledgeFolder )
57+ QuerySet (WorkspaceUserResourcePermission ).bulk_create (workspace_user_resource_permission_list )
58+
59+
60+ class Migration (migrations .Migration ):
861 dependencies = [
962 ('system_manage' , '0002_refresh_collation_reindex' ),
1063 ]
@@ -15,4 +68,5 @@ class Migration(migrations.Migration):
1568 name = 'target' ,
1669 field = models .CharField (db_index = True , max_length = 128 , verbose_name = '知识库/应用id' ),
1770 ),
71+ migrations .RunPython (auth_folder , atomic = False )
1872 ]
0 commit comments