
    ׸i5                        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  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+  G d de	jX                        Z- G d de      Z. G d de      Z/ G d de	jX                        Z0 G d de	jX                        Z1 G d de"      Z2y)     )IsAuthenticated)rest_framework)UserGroupPermissionManager)viewsets)Response)APIView)RefreshToken   )ImplementerDetailsTblUserOrganizationAuthUserProfile)OrganizationDetailsSerializerAuthUserPermissionsSerializerAuthGroupSerializerstatus)
UserClientUserRecruiterMappingN)transaction)send_user_created_mail)TokenObtainPairView)LogEntry)ContentType)get_client_ipget_device_typeget_locationget_city_from_coordsc                       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/talchi_dev/admin_users/views.pyr!   r!      sK    )+!))--/88>H4wi(223Or2   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       r3   getzHomeView.get&   s:    h%!779())r2   N)r$   r%   r&   r   r'   r>   r1   r2   r3   r5   r5   #   s    )+*r2   r5   c                       e Zd ZefZd Zy)
LogoutViewc                    	 |j                   j                  d      }|j                   j                  d      }|j                   j                  d      }|j                   j                  d      }t        j                  j                  |      }t	        |      }t        |      }|r|rt        ||      }	nt        |      }	t        j                  j                  |t        j                  j                  t              |j                  t        |      t        j                  j                  ddg|||	||d	       t!        |      }
|
j#                          t%        t&        j(                  
      S # t        j*                  $ r  t%        ddit&        j,                  
      cY S t.        $ r0}t%        dt        |      it&        j,                  
      cY d }~S d }~ww xY w)Nusernamerefresh_tokenlatitude	longituderB   LoginLogoutactivity
ip_addressdevicelocationrD   rE   actorcontent_type	object_pkobject_repractionchangesr   errorzUser not found)datar>   r   r(   r   r   r   r   r   creater   get_for_modelpkstrActionACCESSr   	blacklistr	   r   HTTP_205_RESET_CONTENTDoesNotExistHTTP_400_BAD_REQUEST	Exception)r:   r;   rB   rC   rD   rE   r7   iprL   rM   tokenes               r3   postzLogoutView.post0   s   *	S||''
3H#LL,,_=M||''
3H((5I<<##X#6Dw'B$W-F I/)D'+##(00>>tD''I--!(( 3"$$ ( (!* $   !/EOO6#@#@AA   	]W&67@[@[\\ 	SWc!f-f6Q6QRR	Ss$   E,E/ /0G!G)%GGGN)r$   r%   r&   r   r'   re   r1   r2   r3   r@   r@   -   s    )++Sr2   r@   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#   )rB   $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)   r;   query_paramsr>   filterdistinct)r:   r+   rj   s      r3   get_querysetzAuthUserView.get_querysetf   sU    <<##%||((,,V4;K@H  ""r2   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)rV   rB   
first_name 	last_nameemailT)rB   rt   rv   rw   	is_activezValidation errors:i  r    )rw   rB   rs   	full_namer7   groupsz[]r"   r"   user_idorganization_idclient_mappingsclientr7   	client_id
recruiters	recruiterr7   recruiter_idprofile_image)'rV   r>   r   is_validr   atomicr   r(   rW   validated_datar8   errorsr	   set_passwordsavert   rv   stripr   rw   rB   r   get_or_create
isinstancerZ   jsonloadsr   r|   addr   r"   r   r   FILESr   get_serializerr   HTTP_201_CREATED)r:   r;   r   rs   user_serializerr7   rz   profilecreated
groups_rawgroups_data
group_datagroup_pkclients_rawclientsitemrecruiters_rawr   rr   
serializers                        r3   rW   zAuthUserView.createp   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                          |j                  j                  d      }|[t:        j                  j=                  |      \  }}|jD                  xs i }|jC                  |       ||_"        |j                          |j                  j                  d      }|[t:        j                  j=                  |      \  }}|jF                  xs i }|jC                  |       ||_#        |j                          | jI                  |      }t        |j                  d      S )Nr}   rs   messagezPassword changed successfully.   r   rr   rx   truerB   rt   rv   rw   r|   r"   r   r~   r   r{   r   r   r   r   r   r   display_column_preference"matched_profiles_column_preferenceaudit_column_preference)%r   r(   r>   rV   r   r   r	   rx   r   rZ   lowerrB   rt   rv   rw   r   r   r|   clearr   r   r   rn   r"   deleterW   r   r   r   r   r   r   r   updater   r   r   )r:   r;   rY   argskwargsr7   r   raw_is_activerx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   existing_preferencesr   r   r   s                              r3   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\\-=-=>b-c*-9*22@@d@KGW#*#M#M#SQS  ''(JK9MG6LLN"),,"2"23L"M".*22@@d@KGW#*#B#B#Hb  ''(?@.BG+LLN((.

44r2   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 )NrU   z#You cannot delete your own account.r   r   )
get_objectr7   r"   r	   r   HTTP_403_FORBIDDENr   r(   rn   r   HTTP_204_NO_CONTENT)r:   r;   r   r   r7   s        r3   destroyzAuthUserView.destroy4  s     <<??dgg%?@00 
 	 ''..tww.?FFHv99::r2   )N)r$   r%   r&   r   r(   r)   r+   r   r,   r-   rp   rW   r   r   r1   r2   r3   rg   rg   ]   sE    ||!H4I18	
#MI^s5j;r2   rg   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,   r1   r2   r3   r   r   B  s.    )+}}  "++E2H*r2   r   c                        e Zd Z fdZ xZS )CustomTokenObtainPairViewc                    |j                   j                  d      }|j                   j                  d      }t        |   |g|i |}|j                  dk(  r|j                   j                  d      }	 t
        j                  j                  |      }t        |      }	t        |      }
|r|rt        ||      }nt        |	      }t        j                  j                  |t        j                  j                  t
              |j                  t!        |      t        j"                  j$                  ddg|	|
|||d	       |S |S # t
        j&                  $ r Y |S w xY w)
NrD   rE   r   rB   rF   rH   rG   rI   rN   )rV   r>   superre   status_coder   r(   r   r   r   r   r   rW   r   rX   rY   rZ   r[   r\   r_   )r:   r;   r   r   rD   rE   responserB   r7   rb   rL   rM   	__class__s               r3   re   zCustomTokenObtainPairView.postJ  sA   <<##J/LL$$[1	7<9$9&93&||''
3H||''':"7+(1	3HiHH+B/H  ''!,!4!4!B!B4!H"gg #D	#??11%-w$7&("($,$,%. ( & x $$ s   6CE EE)r$   r%   r&   re   __classcell__)r   s   @r3   r   r   H  s    ( (r2   r   )3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   r   	django.dbr   masters.utilsr   rest_framework_simplejwt.viewsr   auditlog.modelsr   "django.contrib.contenttypes.modelsr   admin_users.utilsr   r   r   r   ModelViewSetr!   r5   r@   rg   r   r   r1   r2   r3   <module>r      s    6 4 E E # , ( 8 
 
 " ;  ! 0 > $ : ` `4 5 5 4*w *.S .S`c;8(( c;J+H)) +* 3 *r2   