
    }*h1                        S SK Jr  S SKJr  S SKJr  S SKJrJr  S SK	J
r
  SSKJr  SSKJr  S S	K7  S S	K7  S S
KJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S S	K7  S S	K7  S SKJr   " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S \5      r' " S! S"\5      r(g)#    )APIView)Responsestatus)make_passwordcheck_password)RefreshToken   )authenticated)User)*)django_pbkdf2_sha256N)settings)render_to_string)	send_mail)mail)datetimec                       \ rS rSrS rSrg)userRegister   c                    UR                   R                  S5      nUR                   R                  S5      nU(       d  [        SS0[        R                  S9$ U(       d  [        SS0[        R                  S9$ [
        R                  R                  US9R                  5       (       a  [        SS0[        R                  S9$ [
        R                  R                  U[        U5      S	9n[        SS
0[        R                  S9$ )Nemailpasswordmessageemail is requiredr   password is requiredr   z#User with this email already exists)r   r   zUser registered successfully)datagetr   r   HTTP_400_BAD_REQUESTEndUserobjectsfilterexistscreater   HTTP_201_CREATED)selfrequestr   r   users        5/var/www/html/Ai_home/aiagenthome/user_panel/views.pypostuserRegister.post   s      )<<##J/Y(;<VE`E`aaY(>?HcHcdd??!!!.5577Y(MNW]WrWrss%%"8, & 
 $BCFLcLcdd     N__name__
__module____qualname____firstlineno__r+   __static_attributes__r.   r-   r*   r   r      s    er-   r   c                       \ rS rSrS rSrg)	loginUser/   c                    UR                   R                  S5      nUR                   R                  S5      nU(       d  [        SS0[        R                  S9$ U(       d  [        SS0[        R                  S9$  [
        R                  R                  US9n[        X4R                  5      (       d  [        SS0[        R                  S9$ [        R                  " U5      n[        S	[        UR                  5      [        U5      S
.[        R                  S9$ ! [
        R                   a    [        SS0[        R                  S9s $ f = f)Nr   r   r   r   r   r   r   zInvalid credentialszLogin successful)r   accessrefresh)r   r   r   r   r    r!   r"   DoesNotExistHTTP_401_UNAUTHORIZEDr   r   r	   for_userstraccess_tokenHTTP_200_OK)r'   r(   r   r   r)   r:   s         r*   r+   loginUser.post0   s      )<<##J/Y':;6C^C^__Y'=>fFaFabb	e??&&U&3D h66Y(=>vGcGcdd''-)'../7|
 $$	& 	& ## 	eY(=>vGcGcdd	es   :D .E
	E
r.   Nr/   r.   r-   r*   r6   r6   /   s    &r-   r6   c                       \ rS rSrS rSrg)userChangePasswordL   c                 H     [        U5      n[        R                  R                  US9R                  5       nU(       d  [        SS0[        R                  S9$ [        R                  R                  5       R                  5       nUR                  S:X  a%  [        SUR                  S.[        R                  S9$ UR                  R!                  S5      nU(       d  [        SS	0[        R"                  S9$ UR                  R!                  S
5      nU(       d  [        SS0[        R"                  S9$ UR$                  n[&        R(                  " Xh5      n	U	S:X  a  [        SS0[        R*                  S9$ Un
[&        R,                  " U
5      nXl        UR/                  5         [        SS05      $ ! [         a-  n[        S[        U5      0[        R
                  S9s S nA$ S nAff = f! [         a-  n[        S[        U5      0[        R0                  S9s S nA$ S nAff = f)Nr   r   iduser not foundF8Your account has been Inactive, Please contact to admin.r   r   old_passwordzold password is requirednew_passwordnew password is requiredzOld password is incorrectSuccess)r   	Exceptionr   r>   r   r<   r!   r"   r#   firstHTTP_404_NOT_FOUND
SuperAdminallr   HTTP_406_NOT_ACCEPTABLEr   r   r    r   handlerverifyHTTP_403_FORBIDDENhashsaveHTTP_500_INTERNAL_SERVER_ERROR)r'   r(   uideuser_obj	admin_objrK   rL   r   checkr   encrypt_passwords               r*   r+   userChangePassword.postM   s   TN

 C oo$$$,2248
Y 01&:S:STT##'')//19oo%Ybkbqbqr  {A  {Y  {Y  Z  Z,,"">2<
Y9:&B]B]^^,,"">2<
Y9:&B]B]^^%%>>>,65unY:;6C\C\]]8ll8,'==?
Ii(
))1  NYA'0L0LMMN2 
 T
Ic!f%V-R-R
SSTsg   F0 AG* A G* ;;G* 7;G* 3AG* 5:G* 0
G':"G"G'G* "G''G* *
H!4"HH!H!r.   Nr/   r.   r-   r*   rC   rC   L   s    Tr-   rC   c                       \ rS rSrS rSrg)userForgetPasswordp   c                 X    UR                   nUR                  S5      R                  5       R                  5       nU(       d  [	        SS05      $ [
        R                  R                  US9R                  5       nUS:X  a  [	        SS0[        R                  S9$ [
        R                  R                  US9R                  5       nU(       a  [        R                  " SS	S
5      nXel        UR                  5         [!        SUS5        UR"                  nSn[%        SSU05      n	U	n
[&        R(                  n[*        R,                  " XX/U	S9  [	        SU	S.5      $ [	        SS05      $ ! [.         a8  n[!        U5        [	        S[1        U5      0[        R2                  S9s S nA$ S nAff = f)Nr   r   Email is requiredr   r   zPThis email does not exist in our database, please enter the valid email address.r   i  i'     z------------zthe otpzForget Password OTPzforget_password_otp.htmlotp)html_messagezRendered HTML)r   htmlzEmail not exists)r   r   striplowerr   r!   r"   r#   countr   rQ   rP   random	randrangeforgot_password_otprY   printr   r   r   EMAIL_HOST_USERr   r   rO   r>   rZ   )r'   r(   r   r   r)   r]   theotpto_emailsubjectri   plain_message
from_emailr\   s                r*   r+   userForgetPassword.postq   s   U<<DHHW##%++-Ei 3455OO"""/557Dqyi rs  |B  |U  |U  V  V&&U&399;HT4+V"(!]]_
>(9-X$W$%?%Q\!]**Z	^^GJ
Q]^#2 ,   i 2344
 U	!HYs1v&f.S.STTUs2   AE' A
E' B?E' E' '
F)1-F$F)$F)r.   Nr/   r.   r-   r*   rc   rc   p   s    Ur-   rc   c                       \ rS rSrS rSrg)verifyForgetPasswordOTP   c                 h    UR                   R                  S5      R                  5       R                  5       nU(       d)  [	        [
        R                  SS.[
        R                  S9$ UR                   R                  S5      nU(       d)  [	        [
        R                  SS.[
        R                  S9$ [        R                  R                  US9R                  5       nU(       d)  [	        [
        R                  SS.[
        R                  S9$ [        R                  R                  X#S	9nU(       a  [	        [
        R                  S
S.5      $ [	        [
        R                  SS.5      $ ! [         a<  n[	        [
        R                  [        U5      S.[
        R                  S9s S nA$ S nAff = f)Nr   rf   status_codestatus_messager   rh   zotp is Requiredr   zEmail not exist)r   forget_password_otpzSuccessfully VerifiedzInvalid otp)r   r   rk   rl   r   r   r    r!   r"   r#   r@   rO   rZ   r>   )r'   r(   r   rh   check_emailr]   r\   s          r*   r+   verifyForgetPasswordOTP.post   s   \((1779??A'v7R7Rdw(x  AG  A\  A\   ]  ]ll&&u-'v7R7Rdu(v  @F  @[  @[   \  \%oo44U4CJJL"'v7R7Rdu(v  E  Z  Z   [  ["??111Y#63E3EWn$opp#63N3N`m$noo \v/T/Tfijkfl mu{  v[  v[  \  \\s8   A&E+ )A
E+ 4AE+ ?E+ E+ +
F151F,&F1,F1r.   Nr/   r.   r-   r*   rz   rz      s    \r-   rz   c                       \ rS rSrS rSrg)changeForgetPassword   c                 "    UR                   R                  S5      R                  5       R                  5       nU(       d  [	        SS0[
        R                  S9$ [        R                  R                  US9R                  5       nU(       d  [	        SS0[
        R                  S9$ [        R                  R                  5       R                  5       nUR
                  S:X  a%  [	        SUR                  S	.[
        R                  S9$ UR                   R                  S
5      nU(       d  [	        SS0[
        R                  S9$ UR                   R                  S5      nU(       d  [	        SS0[
        R                  S9$ XV:w  a  [	        SS0[
        R                   S9$ ["        R$                  " U5      nXsl        UR)                  5         [	        SS05      $ ! [*         a-  n[	        S[-        U5      0[
        R.                  S9s S nA$ S nAff = f)Nr   r   r   r   r   rH   FrI   rJ   rL   rM   confirm_passwordzconfirm password is requiredz+Password and confirm password are not same.rN   )r   r   rk   rl   r   r   rQ   r!   r"   r#   rP   rR   rS   r   rT   r    rW   rU   rX   r   rY   rO   r>   rZ   )	r'   r(   r   r]   r^   rL   r   r`   r\   s	            r*   r+   changeForgetPassword.post   s   T<<G$**,2245
Y 34V=V=VWWoo$$5$17798
Y 01&:S:STT##'')//19oo%Ybkbqbqr  {A  {Y  {Y  Z  Z,,"">2<
Y9:&B]B]^^ll&&'9:
Y=>fFaFabb&YLMU[UnUnooll#34'==?
Ii(
))	 T
Ic!f%V-R-R
SSTsD   AG AG &A G ;G ;G ?G 8G 
H!"H	H	Hr.   Nr/   r.   r-   r*   r   r      s    Tr-   r   c                        \ rS rSrS rS rSrg)updateProfile   c                 d     [        U5      n[        SU5        [        R                  R                  US9R                  5       nU(       d  [        SS0[
        R                  S9$ [        SU5        UR                  UR                  UR                  UR                  S.n[        [
        R                   SUS.5      $ ! [         a-  n[        S[	        U5      0[
        R                  S9s S nA$ S nAff = f! [         a-  n[        S[	        U5      0[
        R"                  S9s S nA$ S nAff = f)	Nz=================r   r   rF   rH   )namegenderphone_numberimagezFetched Successfully)r~   r   all_data)r   rq   rO   r   r>   r   r<   r!   r"   r#   rP   rQ   r   r   r   r   r@   rZ   )r'   r(   r[   r\   r]   r   s         r*   r   updateProfile.get   s   TL

 C	
c" oo$$$,2248
Y 01&:S:STT	X&==__((NN	8 &"4"4F\hpq
rr  LYs1v&f.J.JKKL 
 T
Ic!f%V-R-R
SSTsN   B> AC8 &AC8 >
C5"C0*C5+C8 0C55C8 8
D/"D*$D/*D/c                      [        U5      n[        R                  R                  US9R                  5       nU(       d  [        SS0[        R                  S9$ UR                  R                  S5      nUR                  R                  S5      nUR                  R                  S5      nUR                  R                  S5      nXTl        Xdl        Xtl        Xl        UR#                  5         [%        S	U5        [        [        R&                  S
S.5      $ ! [         a-  n[        S[        U5      0[        R
                  S9s S nA$ S nAff = f! [         a-  n[        S[        U5      0[        R(                  S9s S nA$ S nAff = f)Nr   r   rF   rH   r   r   r   r   r]   zProfile updated successfullyr}   )r   rO   r   r>   r   r<   r!   r"   r#   rP   rQ   r   r   r   r   r   r   rY   rq   r@   rZ   )	r'   r(   r[   r\   r]   r   r   r   r   s	            r*   r+   updateProfile.post   sF   TL

 C oo$$$,2248
Y 01&:S:STT
,,

6
"4LLX&6!!.1<<<G$5 =?'>==?H
&"4"4Fde
ff-  LYs1v&f.J.JKKL. 
 T
Ic!f%V-R-R
SSTsN   D AE B;E 
E "EEE EE 
F"F<FFr.   Nr0   r1   r2   r3   r   r+   r4   r.   r-   r*   r   r      s    T2Tr-   r   c                       \ rS rSrS rSrg)UploadImages   c                 :    UR                   nUR                  S5      n/ nU H  n[        U5      nUR                  U5        M!     [	        [
        R                  SUS.5      $ ! [         a-  n[	        S[        U5      0[
        R                  S9s S nA$ S nAff = f)Nr   rN   )r~   r   r   r   r   )
r   getlistuploadTheDocumentappendr   r   r@   rO   r>   rZ   )r'   r(   r   images
image_urlsr   
image_pathr\   s           r*   r+   UploadImages.post   s    	V
,,4LL!6:u"5)Jj!  &"4"4iWab
cc	 V
Is1v&v/T/T
UUVs   A A# #
B-"BBBr.   Nr/   r.   r-   r*   r   r      s    
Vr-   r   c                        \ rS rSrS rS rSrg)chatBoti  c                      [        U5      n[        R                  R                  US9R                  5       nU(       d  [        SS0[        R                  S9$ [        R                  R                  [        U5      S9n/ nU Hb  nUR                  UR                  UR                  UR                  UR                   UR"                  UR$                  UR&                  S.5        Md     [        SUS.[        R(                  S9$ ! [         a-  n[        S[        U5      0[        R
                  S9s S nA$ S nAff = f! [         a.  n[        S	[        U5      S
.[        R*                  S9s S nA$ S nAff = f)Nr   r   rF   rH   )user_id)rG   r   chatbot_namecategories_namedescriptionpdf_data
created_atrN   )r   r   Internal server errorr   details)r   rO   r   r>   r   r<   r!   r"   r#   rP   rQ   chatBot_settingr   rG   r   r   r   r   r   r   r@   rZ   )r'   r(   r[   r\   r]   chatBotschatbot_listingbots           r*   r   chatBot.get  sE   zL

 C oo$$#$.4468
Y 01&:S:STT%%,,s3x,@8?s
&&{{$$**??..	 	  y/B6K]K]
^^+  LYs1v&f.J.JKKL. 
 z
63q6JSYSxSx
yyzsN   D AD? B*D? 
D<"D71D<2D? 7D<<D? ?
E7	#E2,E72E7c           
           [        U5      n[        R                  R                  US9R                  5       nU(       d  [        SS0[        R                  S9$ UR                  n[        R                  R                  UUR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S	5      S
9n[        SUR                  S.[        R                   S9$ ! [         a-  n[        S[        U5      0[        R
                  S9s S nA$ S nAff = f! [         a.  n[        S[        U5      S.[        R"                  S9s S nA$ S nAff = f)Nr   r   rF   rH   r   r   r   r   r   )r   r   r   r   r   r   zChatbot setting created)r   
chatbot_idr   r   )r   rO   r   r>   r   r<   r!   r"   r#   rP   rQ   r   r   r%   r   rG   r&   rZ   )r'   r(   r[   r\   r]   r   chatbots          r*   r+   chatBot.post.  s;   {L

 C oo$$$,2248
Y 01&:S:STT	4$$++88N+hh01((=)xx
#,' , 7 8

S\b\s\s
tt  LYs1v&f.J.JKKL" 
 { 7CFKTZTyTyzz{sN   C8 AD2 BD2 8
D/"D*$D/%D2 *D//D2 2
E*<#E%E*%E*r.   Nr   r.   r-   r*   r   r     s    z>{r-   r   ))rest_framework.viewsr   rest_framework.responser   rest_frameworkr   django.contrib.auth.hashersr   r   rest_framework_simplejwt.tokensr	   authenticationr   modelsr   user_panel.modelsadmin_panel.modelspasslib.hashr   rU   rn   django.confr   django.template.loaderr   django.core.mailr   django.corer   admin_panel.functionsadmin_panel.viewsr   r   r6   rC   rc   rz   r   r   r   r   r.   r-   r*   <module>r      s    ( , ! E 8 )     8    3 &  #  
e7 e,& &:T TH U  UF\w \,T7 T:6TG 6TrV7 V7{g 7{r-   