
    ueg                        d dl mZmZmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ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  e       Z e        ej5                  de       ee      fdede
fd       Zej9                  dee          ee      fde
fd       Zej=                  de       ee      fdedede
fd       Z ejC                  de       ee      fdede
fd       Z"de
defdZ#y)    )	APIRouterDependsHTTPException)Pagepaginate)"disable_installed_extensions_check)Session)RoleBase
RoleCreate
RoleUpdate)RolePermissionCreate)Role)
Permission)RolePermission)check_user_is_admin )response_modelroledbc                    | j                  dh      }t        di |}|j                  |       |j                          |j	                  |       | j
                  D ]d  }t        |j                  |      }t        di |j                         }|j                  |       |j                          |j	                  |       f t        ||j                        S )Npermissions)excluderole_idpermission_id )dictr   addcommitrefreshr   r   idr   
model_dumpget_role_with_permissions)r   r   	role_datadb_role
permissionrole_permissiondb_role_permissions          H/Users/theessential/Documents/Github/Lekema-Backend/app/routers/roles.pycreate_roler*      s    		=/	2IYGFF7OIIKJJw&& '
.wzzQ[\+Ko.H.H.JK
!"
		


%&' %R44    c                 .   | j                  t              j                  t        j                  dk(        j	                         }|D ]  }| j                  t
              j                  t
        j                  |j                  k(        j	                         }|D cg c]  }|j                   }}| j                  t              j                  t        j                  j                  |            j	                         }||_         t        |      S c c}w )N   )queryr   filterstatusallr   r   r!   r   r   in_r   r   )r   rolesr   role_permissionsrppermission_idsr   s          r)   get_all_permissionsr7   $   s    HHTN!!$++"23779E '88N3::>;Q;QUYU\U\;\]aac5EFr"**FFhhz*11*--2C2CN2STXXZ&	'
 E? Gs   Dz
/{role_id}r   c                 h   |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  |_        |j                          |j                  |       |j                  t              j                  t        j                  | k(        j                          |j                          |j                  D ]A  }t        | |      }|j                  |       |j                          |j                  |       C t        ||       S )N  Role not foundstatus_codedetailr   )r.   r   r/   r!   firstr   labelr   r    r   r   deleter   r   r#   )r   r   r   r%   r   r(   s         r)   update_rolerA   /   s    hhtn##DGGw$67==?G4DEEJJGMIIKJJw HH^##N$:$:g$EFMMOIIK )) '+G=Y
!"
		


%&	' %R11r+   c                     |j                  t              j                  t        j                  | k(        j	                         }|t        dd      d|_        |j                          |S )Nr9   r:   r;   r   )r.   r   r/   r!   r>   r   r0   r   )r   r   r%   s      r)   delete_rolerC   G   sT    hhtn##DGGw$67==?G4DEEGNIIKNr+   c                    | j                  t              j                  t        j                  |k(        j	                         }|r| j                  t
              j                  t
        j                  |j                  k(        j                         }|D cg c]  }|j                   }}| j                  t              j                  t        j                  j                  |            j                         }||_        |S c c}w )N)r.   r   r/   r!   r>   r   r   r1   r   r   r2   r   )r   r   r   r4   r5   r6   r   s          r)   r#   r#   T   s    88D>  G!34::<D88N3::>;Q;QUYU\U\;\]aac5EFr"**FFhhz*11*--2C2CN2STXXZ&K Gs   DN)$fastapir   r   r   fastapi_paginationr   r   fastapi_pagination.utilsr   sqlalchemy.ormr	   app.schemas.roler
   r   r   app.schemas.role_permissionr   app.models.roler   app.models.permissionr   app.models.role_permissionr   app.utils.authentificationr   routerpostr*   getr7   putintrA   r@   rC   r#   r   r+   r)   <module>rT      s-   5 5 - G " = = <   , 5 :	 " $ R)078K0L 5j 5g 5 *5" BtH~.&-.A&B G  / L2>EFY>Z 2 2J 2G 2 32. |H5,34G,H 	 	' 	 6	' C r+   