
    hk                        S SK r S SKJrJr  S SKrS SKJrJrJrJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJrJr  S SKJrJrJrJr  S SKJr  \" 5       r\" 5         \ R8                  " S	S
5      r\R=                  S\\   S9\" \5      \	" SSS9\	" SSS9\	" SSS94S\S\\    S\\    S\\    4S jj5       r!\RE                  S\S9\" S5      \" \5      4S\S\
S\4S jj5       r#\R=                  S\S9\" \5      4S\ S\4S jj5       r$\RK                  S\S9\" S5      \" \5      4S\ S\S\
S\4S jj5       r&\RO                  S5      \" \5      4S\ S\4S jj5       r(g)    N)OptionalList)	APIRouterDependsHTTPExceptionQuery
UploadFileFileForm)"disable_installed_extensions_check)check_user_is_admin)UserRegistration)
UserUpdate
UserCreateUserResponseProfileResponse)GeneralStateFILE_STORAGE_PATHfiles/)response_modelzRecherche par nom ou email)descriptionu   Filtrer par rôleu   Filtrer par étatdependenciessearchrolestatec                 V   U u  pEUR                  [        5      R                  [        R                  [        R
                  :H  5      nU(       az  UR                  [        R                  R                  SU S35      [        R                  R                  SU S35      -  [        R                  R                  SU S35      -  5      nU(       a"  UR                  [        R                  U:H  5      nU(       a"  UR                  [        R                  U:H  5      nUR                  5       $ )N%)queryr   filterr   r   ACTIVE	firstnameilikelastnameemailr   all)r   r   r   r   dbuserr    s          AD:\kofCorporation\kof-academy-backend\app\routers\admins\users.py
list_usersr+      s     HBHHTN!!$**0C0C"CDE^^!!AfXQ-0]]  1VHA/1ZZ&m,.

 TYY$./TZZ50199;    user_createavatarc                 .   Uu  p4[        S0 U R                  5       D6nU(       a  [        R                  R	                  UR
                  5      S   n[        R                  " 5        U 3n[        R                  R                  [        U5      n[        US5       n	U	R                  UR                  R                  5       5        S S S 5        Xl        UR                  U5        UR!                  5         UR#                  U5        U$ ! , (       d  f       NH= f)N   wb )r   
model_dumpospathsplitextfilenameuuiduuid4joinr   openwritefilereadr.   addcommitrefresh)
r-   r.   r   r(   r)   new_userextr7   filepathfs
             r*   create_userrF   3   s     HB/k,,./Hggv/2jjl^C5)77<< 18<(D!QGGFKK$$&' "" FF8IIKJJxO "!s   *D
Dz
/{user_id}user_idc                 N   Uu  p#UR                  [        5      R                  [        R                  U :H  5      R	                  5       nU(       d  [        SS5      eUR                  [        5      R                  [        R                  UR                  :H  5      R                  5       nU Vs/ s HO  nUR                  UR                  (       a  UR                  R                  OS UR                  UR                  S.PMQ     nn[        [        R                   " U5      US9$ s  snf )N  Utilisateur introuvable)
program_idprogram_titletracking_statexp)r)   progression)r    r   r!   idfirstr   r   rG   r'   rK   programtitlerM   tracking_xp_countr   r   model_validate)rG   r   r(   r)   registrationsrrO   s          r*   get_user_detailsrX   O   s    HB88D>  G!34::<DC!:;; 		$$/	0	   A ,,01		QYY__t..%%		
    		$	$T	* s   ,AD"datac                    Uu  pEUR                  [        5      R                  [        R                  U :H  5      R	                  5       nU(       d  [        SS5      eUR                  SS9R                  5        H  u  pg[        XVU5        M     U(       a  [        R                  R                  UR                  5      S   n[        R                  " 5        U 3n	[        R                  R                  [         U	5      n
[#        U
S5       nUR%                  UR&                  R)                  5       5        S S S 5        Xl        UR-                  5         UR/                  U5        U$ ! , (       d  f       N7= f)NrI   rJ   T)exclude_unsetr0   r1   )r    r   r!   rP   rQ   r   dictitemssetattrr4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r.   r@   rA   )rG   rY   r.   r   r(   r)   fieldvaluerC   r7   rD   rE   s               r*   update_userra   l   s	   HB88D>  G!34::<DC!:;;			5;;=U# >ggv/2jjl^C5)77<< 18<(D!QGGFKK$$&' "IIKJJtK "!s   	*E$$
E2c                    Uu  p#UR                  [        5      R                  [        R                  U :H  5      R	                  5       nU(       d
  [        SSS9e[        R                  Ul        UR                  5         SS0$ )NrI   zUser not found)status_codedetailmessagezUser deleted successfully)
r    r   r!   rP   rQ   r   r   DELETEDr   r@   )rG   r   r(   adminr)   s        r*   delete_userrh      sj     IB88D>  G!34::<D4DEE %%DJIIK233r,   ))r4   typingr   r   r8   fastapir   r   r   r   r	   r
   r   fastapi_pagination.utilsr   app.utils.authentificationr   app.models.baser   r   app.schemas.userr   r   r   r   app.enums.general_stater   routergetenvr   gettuplestrr+   postrF   rX   putra   deleterh   r2   r,   r*   <module>rx      s   	 !  T T T G : / R R 0 
 " $II17;  C\ 23!"56!$4PQ2EF 3FG	SM 3- C=	 40 S. d!"56  /6 L/:9@AT9U c   ;8 L6EI$Zgn  pC  hD  J 
 _d  7, |4;<O4P 4 4E 4 4r,   