
    Xjt                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ  ee          Z G d d          Zd	S )
    )Session)AppException)add_permission_for_role)Role)RolePermission)
get_loggerlog_executionc                       e Zd Zg dZg dZededededefd            Z	ee
	 ddededed	ed
edefd                        Zedededededef
d            ZdS )PermissionTemplateService)usersrolesknowledge_basesknowledge_categoriesknowledge_tagsagents	workflows	documents
audit_logsmenus	providersmodels)readcreateupdatedeleteexecuteviewdbrole_id	tenant_idreturnc                    |                      t                                        t          j        |k                                              }|st          dd          |                      t                                        t          j        |k    t          j                   	                                }|j
        |j        |d |D             dS )N   角色不存在Role not foundc                 ,    g | ]}|j         |j        d S )resourceactionr&   ).0perms     W/lsinfo/ai/hellotax_ai/base_platform/app/services/access/permission_template_service.py
<listcomp>zEPermissionTemplateService.export_role_permissions.<locals>.<listcomp>+   s1       GKT]dkBB      )	role_name	role_coder    permissions)queryr   filteridfirstr   r   r   
is_deletedallnamecode)r   r   r    roler0   s        r+   export_role_permissionsz1PermissionTemplateService.export_role_permissions   s    xx~~$$TW%788>>@@ 	D02BCCCHH^$$VN*g5>;T7TUUSUU 	 " OZ  	
 
 	
r-   Fconfigreplacec           	         |                      t                                        t          j        |k                                              }|st          dd          |j        rt          dd          |                    dg           D ]}|                    d          }|                    d          }|r|st          dd	          |                    d
          sH|t          j
        vrt          d| d|           |t          j        vrt          d| d|           |rM|                      t                                        t          j        |k                                               |                    dg           D ]}|                    d          }|                    d          }|                      t                                        t          j        |k    t          j        |k    t          j        |k    t          j                                                   }	|	rt          ||||          }
|                     |
           t'          d|j         |||           |                                  t,                              dt1          |                    dg                      d|            dS )Nr#   r$   u   系统角色权限不可修改z*System role permissions cannot be modifiedr0   r'   r(   u   权限配置格式错误zInvalid permission formatzmenu:u   无效的资源: zInvalid resource: u   无效的操作: zInvalid action: )r   r'   r(   r    zrole:z	Imported z permissions for role T)r1   r   r2   r3   r4   r   	is_systemget
startswithr   VALID_RESOURCESVALID_ACTIONSr   r   r   r'   r(   r5   addr   r8   commitloggerinfolen)r   r   r    r;   r<   r9   r*   r'   r(   existing	role_perms              r+   import_role_permissionsz1PermissionTemplateService.import_role_permissions0   s   
 xx~~$$TW%788>>@@ 	D02BCCC> 	o?AmnnnJJ}b11 		b 		bDxx
++HXXh''F \6 \"#=?Z[[[&&w// b#<#LLL&'E8'E'EGf\dGfGfggg!:!HHH&'C6'C'CE`X^E`E`aaa 	XHH^$$++N,Bg,MNNUUWWWJJ}b11 	V 	VDxx
++HXXh''F(("*g5"+x7")V3&11	     &(6Y  I FF9#$7DI$7$7HfUUUU
		cFJJ}b$A$A B BccZaccdddtr-   from_role_id
to_role_idc                 x    t                               | ||          }t                               | |||d          S )NF)r<   )r   r:   rJ   )r   rK   rL   r    r;   s        r+   copy_permissionsz*PermissionTemplateService.copy_permissions^   sC    *BB2|U^__(@@
Ivu A 
 
 	
r-   N)F)__name__
__module____qualname__rA   rB   staticmethodr   intdictr:   r	   boolrJ   rN    r-   r+   r   r      s         O NMMM
G 
c 
c 
d 
 
 
 \
$ QV* **!*.1*;?*JN*	* * * ] \*X 
W 
C 
S 
UX 
]a 
 
 
 \
 
 
r-   r   N)sqlalchemy.ormr   app.core.exceptionsr   app.core.permissionsr   app.models.roler   app.models.role_permissionr   common_loggingr   r	   rO   rE   r   rV   r-   r+   <module>r]      s    " " " " " " , , , , , , 8 8 8 8 8 8             5 5 5 5 5 5 4 4 4 4 4 4 4 4	H		W
 W
 W
 W
 W
 W
 W
 W
 W
 W
r-   