
    Xj(
                     z    d dl mZ d dlmZ d dlmZ d dlmZ  ee          Z	 G d d          Z
 e
            ZdS )    )Session)Role)UserRole)
get_loggerc            
           e Zd Zdededee         fdZdededee         deddf
dZdeded	ede	fd
Z
deded	eddfdZdS )CRUDUserRoledbuser_idreturnc                   |                     t                                        t          j        |k    t          j                                                   }d |D             }|sg S |                     t                                        t          j                            |          t          j                                                   S )Nc                     g | ]	}|j         
S  )role_id).0urs     :/lsinfo/ai/hellotax_ai/base_platform/app/crud/user_role.py
<listcomp>z/CRUDUserRole.get_user_roles.<locals>.<listcomp>   s    4442BJ444    )	queryr   filterr
   
is_deletedallr   idin_)selfr	   r
   
user_rolesrole_idss        r   get_user_roleszCRUDUserRole.get_user_roles   s    HHXVH$/X5H1HIISUU 	
 54444 	Ixx~~$$TW[[%:%:<OPPTTVVVr   r   	tenant_idNc                $   ddl m}m}m} |                     ||          }|                    t                                        t          j        |k    t          j	                   
                                }	|	D ]	}
d|
_	        
|D ](}t          ||          }|                    |           )|                                 |D ]} ||d|j         |           |                    t                                        t          j                            |                    
                                }|D ]} ||d|j         |            |||           t"                              |                              d           d S )Nr   )add_role_for_userinvalidate_user_permissionsremove_role_for_user)r
   Tr
   r   zrole:zUser roles updated)app.core.permissionsr!   r"   r#   r   r   r   r   r
   r   r   addcommitcoder   r   r   loggerbindinfo)r   r	   r
   r   r   r!   r"   r#   	old_rolesexistingr   r   	user_roleold_role	new_rolesroles                   r   update_user_roleszCRUDUserRole.update_user_roles   s   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 ''G'<<	HHXVH$/X5H1HIISUU 	
  	! 	!B BMM 	 	G 'BBBIFF9
		! 	N 	NH  *A(-*A*A9MMMMHHTNN))$'++h*?*?@@DDFF	 	G 	GDg':ty':':IFFFF##GY777G$$))*>?????r   r   c                   t          ||          }|                    |           |                                 |                    |           t                              ||                              d           |S )Nr$   zUser role added)r   r&   r'   refreshr)   r*   r+   r   r	   r
   r   r.   s        r   add_user_rolezCRUDUserRole.add_user_role5   sp    Wg>>>	
y
		


9GW55::;LMMMr   c                r   |                     t                                        t          j        |k    t          j        |k    t          j                                                   }|rLd|_        |                                 t          	                    ||          
                    d           d S d S )NTr$   zUser role removed)r   r   r   r
   r   r   firstr'   r)   r*   r+   r5   s        r   remove_user_rolezCRUDUserRole.remove_user_role=   s    HHXV G+ G+'' 
 UWW 	  	T#'I IIKKKKKK99>>?RSSSSS	T 	Tr   )__name__
__module____qualname__r   intlistr   r   r2   r   r6   r9   r   r   r   r   r      s        	W 	Wc 	Wd4j 	W 	W 	W 	W@@'*@6:3i@LO@	@ @ @ @: S 3 8    T7 T Tc Td T T T T T Tr   r   N)sqlalchemy.ormr   app.models.roler   app.models.user_roler   common_loggingr   r:   r)   r   r.   r   r   r   <module>rC      s    " " " " " "             ) ) ) ) ) ) % % % % % %	H		?T ?T ?T ?T ?T ?T ?T ?TD LNN			r   