
    IdiG&                     n   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mZmZ dd
lmZmZmZ d dlmZ d dlmZmZ d dlZd dlmZ d dlm Z   G d de	jB                        Z" G d de      Z# G d de      Z$ G d de	jB                        Z% G d de	jB                        Z&y)    )IsAuthenticated)rest_framework)UserGroupPermissionManager)viewsets)Response)APIView)RefreshToken   )ImplementerDetailsTblUserOrganizationAuthUserProfile)OrganizationDetailsSerializerAuthUserPermissionsSerializerAuthGroupSerializerstatus)
UserClientUserRecruiterMappingN)transaction)send_user_created_mailc                       e Zd ZefZej                  j                         j                  d      Z	e
ZddgiZej                  gZy)ImplementerDetailsViewSetidexactN)__name__
__module____qualname__r   permission_classesr   objectsallorder_byquerysetr   serializer_classfilterset_fieldsfiltersDjangoFilterBackendfilter_backends     ,/var/www/auto_recruiter/admin_users/views.pyr   r      sK    )+!))--/88>H4wi(223Or+   r   c                       e Zd ZefZd Zy)HomeViewc                     |j                   }t                t        d|j                          |j                         }t	        |      S )Nzuser: )userr   printget_group_permissionsr	   )selfrequestc_useruser_permissionss       r,   getzHomeView.get"   s:    h%!779())r+   N)r   r   r   r   r    r7   r*   r+   r,   r.   r.      s    )+*r+   r.   c                       e Zd ZefZd Zy)
LogoutViewc                     	 |j                   d   }t        |      }|j                          t        t        j
                        S # t        $ r$}t        t        j                        cY d }~S d }~ww xY w)Nrefresh_tokenr   )datar   	blacklistr	   r   HTTP_205_RESET_CONTENT	ExceptionHTTP_400_BAD_REQUEST)r3   r4   r;   tokenes        r,   postzLogoutView.post,   s^    	@#LL9M /EOO6#@#@AA 	@6#>#>??	@s   AA 	A3A.(A3.A3N)r   r   r   r   r    rC   r*   r+   r,   r9   r9   )   s    )+@r+   r9   c                   l    e Zd Zej                  j                         ZeZdgdgdZ	d Z
d ZddZd Zy)	AuthUserViewr   )username$auth_user_organization__organizationc                     t         j                  j                         }| j                  j                  j                  d      }|dk(  r|j                  d      }|j                         S )Nrole	Recruiter)groups__name)r   r!   r"   r4   query_paramsr7   filterdistinct)r3   r$   rI   s      r,   get_querysetzAuthUserView.get_queryset>   sU    <<##%||((,,V4;K@H  ""r+   c           
      v   |j                   j                  d      }|j                   j                  d      }t        |j                         }|j                         rt	        j
                         5  t        j                  j                  |j                  d   |j                  j                  dd      |j                  j                  dd      |j                  j                  dd      d	
      }d d d        n-t        d|j                         t        |j                  d      S j                  |j                   d          |j                          |j                   d|j                    j#                         }t%        |j&                  |j(                  ||       t*        j                  j-                  |      \  }}|j                   j                  dd      }	t/        |	t0              rt3        j4                  |	      n|	}
|
D ]e  }t/        |t0              rt3        j4                  |      }t6        j                  j                  |d         }|j8                  j;                  |       g |r+t<        j                  j                  |j>                  |       |j                   j                  dd      }t/        |t0              rt3        j4                  |      n|}|D ]K  }t/        |t0              rt3        j4                  |      }t@        j                  j                  ||d          M |j                   j                  dd      }t/        |t0              rt3        j4                  |      n|}|D ]K  }t/        |t0              rt3        j4                  |      }tB        j                  j                  ||d          M |jD                  j                  d      }|r||_#        |j                          | jI                  |      }t        |j                   tJ        jL                        S # 1 sw Y   xY w)Norganizationpassword)r<   rF   
first_name 	last_nameemailT)rF   rS   rU   rV   	is_activezValidation errors:i  r    )rV   rF   rR   	full_namer0   groupsz[]r   r   user_idorganization_idclient_mappingsclientr0   	client_id
recruiters	recruiterr0   recruiter_idprofile_image)'r<   r7   r   is_validr   atomicr   r!   createvalidated_datar1   errorsr	   set_passwordsaverS   rU   stripr   rV   rF   r   get_or_create
isinstancestrjsonloadsr   r[   addr   r   r   r   FILESrh   get_serializerr   HTTP_201_CREATED)r3   r4   r_   rR   user_serializerr0   rY   profilecreated
groups_rawgroups_data
group_datagroup_pkclients_rawclientsitemrecruiters_rawrd   rrh   
serializers                        r,   rk   zAuthUserView.createH   sn   !,,**>:<<##J/ 8W\\J##%##% ||**,;;JG.==AA,PRS-<<@@bQ)88<<WbI" +   &(>(>?O223??',,z23		'q(89??A	**]]		
 '..<<$<G\\%%h5
0::s0Kdjj,Q[% 	&J*c*!ZZ
3
}}((Jt,<(=HKKOOH%	& #++22 / 3 
 ll&&'8$?-7S-I$**[){ 	KD$$zz$'%%44>%J		K !)),=3=nc3RTZZ/Xf
 	A!S!JJqM ((//{^ 0 		  ))/:$1G!LLN((.

0G0GHHM s   1B P..P8Nc                 |
   t         j                  j                  |      }d|j                  v r=|j	                  |j                  d          |j                          t        ddid      S |j                  j                  d      }|j                  j                  d|j                        }t        |t              r|j                         d	k(  }n|}|j                  j                  d
|j                        |_        |j                  j                  d|j                        |_        |j                  j                  d|j                        |_        |j                  j                  d|j                        |_        ||_        |j                          |j                  j                  dg       }	t        |	t              rt        j                   |	      }
n|	}
|j"                  j%                          |
D ]e  }t        |t              rt        j                   |      }t&        j                  j                  |d         }|j"                  j)                  |       g |rct*        j                  j-                  |j.                        j1                          t*        j                  j3                  |j.                  |       |j                  j                  dg       }t        |t              rt        j                   |      }n|}t4        j                  j-                  |      j1                          |D ]K  }t        |t              rt        j                   |      }t4        j                  j3                  ||d          M |j                  j                  dg       }t        |t              rt        j                   |      }n|}t6        j                  j-                  |      j1                          |D ]K  }t        |t              rt        j                   |      }t6        j                  j3                  ||d          M |j8                  j                  d      }|r:t:        j                  j=                  |      \  }}||_        |j                          |j                  j                  d      }|[t:        j                  j=                  |      \  }}|j@                  xs i }|jC                  |       ||_         |j                          | jE                  |      }t        |j                  d      S )Nr\   rR   messagezPassword changed successfully.   r   rQ   rW   truerF   rS   rU   rV   r[   r   r^   r]   r`   rZ   ra   rb   rd   re   rf   rh   display_column_preference)#r   r!   r7   r<   rn   ro   r	   rW   rr   rs   lowerrF   rS   rU   rV   rt   ru   r[   clearr   rv   r   rM   r   deleterk   r   r   rw   r   rq   rh   r   updaterx   )r3   r4   pkargskwargsr0   r_   raw_is_activerW   r}   r~   r   r   r   r   r   r   rd   r   rh   r{   r|   r   existing_preferencesr   s                            r,   r   zAuthUserView.update   s!   ||2& %gll:67IIKY(HIRUVV!,,**>:((dnnEmS)%++-7I%I  ((T]]C!,,**<I ))+t~~F\\%%gtzz:
"		\\%%h3
j#&**Z0K$K% 	&J*c*!ZZ
3
}}((Jt,<(=HKKOOH%	& #++224772CJJL#++22 / 3  ll&&'8"=k3'jj-G!G!!t!,335 	D$$zz$'%%x. & 		 !)),;nc*N3J'J$$+++6==? 	A!S!JJqM ((//{^ 0 		  ))/:*22@@d@KGW$1G!LLN$+LL$4$45P$Q!$0*22@@d@KGW#*#D#D#J  ''(AB0DG-LLN((.

44r+   c                 f   | j                         }|j                  j                  |j                  k(  rt        ddit        j
                        S t        j                  j                  |j                        j                          |j                          t        t        j                        S )Nerrorz#You cannot delete your own account.r   r   )
get_objectr0   r   r	   r   HTTP_403_FORBIDDENr   r!   rM   r   HTTP_204_NO_CONTENT)r3   r4   r   r   r0   s        r,   destroyzAuthUserView.destroy   s     <<??dgg%?@00 
 	 ''..tww.?FFHv99::r+   )N)r   r   r   r   r!   r"   r$   r   r%   r&   rO   rk   r   r   r*   r+   r,   rE   rE   5   sE    ||!H4I18	
#MI^c5J;r+   rE   c                   h    e Zd ZefZej                  j                         j                  d      Z	e
Zy)AuthGroupViewz-idN)r   r   r   r   r    r   r!   r"   r#   r$   r   r%   r*   r+   r,   r   r   
  s.    )+}}  "++E2H*r+   r   )'rest_framework.permissionsr   django_filtersr   r'   django.contrib.auth.modelsr   r   r   r   rest_framework.responser	   rest_framework.viewsr
   rest_framework_simplejwt.tokensr   modelsr   r   r   serializersr   r   r   r   masters.modelsr   r   rt   	django.dbr   masters.utilsr   ModelViewSetr   r.   r9   rE   r   r*   r+   r,   <module>r      s    6 4 E E # , ( 8 
 
 " ;  ! 04 5 5 4*w *
@ 
@S;8(( S;j+H)) +r+   