
     h                      D   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
 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mZ d dlmZ d dlZd dlZd dlmZ d dlmZ  G d de      Z G d de      Z  G d de      Z! G d de      Z" G d de      Z# G d de      Z$y)    )handler)render)settings)urls)EndUserTermsAndConditions)r   redirectHttpResponse)Response)APIViewstatus)make_passwordcheck_password)RefreshTokenN)render_to_string)mailc                       e Zd Zd Zy)UserRegisterc                    	 |j                   }|j                  d      }|j                  d      j                         j                  dd      j	                         }|j                  d      }|st        ddit        j                        S |st        dd	it        j                        S |st        dd
it        j                        S t        |      }t        j                  j                  |      j                         }|rt        ddit        j                        S t        j                  j                  |||      }t        ddi      S # t        $ r0}	t        dt!        |	      it        j"                        cY d }	~	S d }	~	ww xY w)Nnameemail  passwordmessageemail is requiredr   zname is requiredpassword is requiredr   zThe email is already registered)r   r   r   z.You have been successfully registered with us.)datagetstripreplacelowerr   r   HTTP_400_BAD_REQUESTr   r   objectsfilterfirstHTTP_409_CONFLICTcreate	ExceptionstrHTTP_500_INTERNAL_SERVER_ERROR)
selfrequestr    r   r   r   new_passwordcheck_emailuser_objes
             VC:\Users\ASUS\Downloads\tempra\MachineShop\MachineShop\machine_shop\panel_api\views.pypostzUserRegister.post   sP   	]<<D88F#DHHW%++-55c2>DDFExx
+H+> ?vGbGbcc+= >fFaFabb+A B&JeJeff(2L!//00u0=CCEK+L MU[UmUmnn"??11t%Q]1^Y'WXYY 	]Ys1v.f6[6[\\	]s7   B	E E +E 
AE ".E 	F
%F?F
F
N__name__
__module____qualname__r5        r4   r   r      s    ]r;   r   c                       e Zd Zd Zy)	LoginUserc                    |j                   j                  d      }|j                   j                  d      }|st        ddit        j                        S |st        ddit        j                        S 	 t
        j                  j                  |      }t        ||j                        st        dd	it        j                        S t        j                  |      }t        d
|j                  t        |j                        t        |      dt        j                         S # t
        j                  $ r  t        ddit        j                        cY S w xY w)Nr   r   r   r   r   r   r   zUser Not credentialszInvalid credentialszLogin successful)r   usernameaccessrefresh)r    r!   r   r   r%   r   r&   DoesNotExistHTTP_401_UNAUTHORIZEDr   r   r   for_userr   r,   access_tokenHTTP_200_OK)r.   r/   r   r   userrA   s         r4   r5   zLoginUser.post,   s&     )<<##J/Y':;6C^C^__Y'=>fFaFabb	f??&&U&3D h6Y(=>vGcGcdd''-)yy'../7|	

 $$& 	& ## 	fY(>?HdHdee	fs   6 D$ $0EENr6   r:   r;   r4   r=   r=   +   s    &r;   r=   c                       e Zd Zd Zy)UserForgetpasswordc                 `   	 |j                   }|j                  d      j                         j                         }|st	        ddi      S t
        j                  j                  |      j                         }|dk(  rt	        ddit        j                        S t
        j                  j                  |      j                         }|rt        j                  dd	d
      }||_        |j                          t!        d|d       |j"                  }d}t%        dd|i      }	|	}
t&        j(                  }t+        j,                  ||
||g|	       t	        d|	d      S t	        ddi      S # t.        $ r;}t!        |       t	        dt1        |      it        j2                        cY d }~S d }~ww xY w)Nr   r   Email is requiredr   r   zPThis email does not exist in our database, please enter the valid email address.r   i  i'     z--------------theotpzForget Password OTPzforget_password_otp.htmlotp)html_messagezRendered HTML)r   htmlzEmail not exists)r    r!   r"   r$   r   r   r&   r'   countr   HTTP_404_NOT_FOUNDr(   random	randrangeforgot_password_otpsaveprintr   r   r   EMAIL_HOST_USERr   	send_mailr+   r,   r-   )r.   r/   r    r   rG   r2   rM   to_emailsubjectrO   plane_message
from_emailr3   s                r4   r5   zUserForgetpassword.postF   s   	a<<D88G$**,224E+> ?@@??)))7==?Dqy+} ~  GM  G`  G`  a  a--U-;AACH))$tA6/5,&x9"..//0JERX>Z ,%55
w}Z
Yef_ ,!. / /  += >?? 	aa3q6 2&:_:_``	as2   AE) 
AE) CE) E) )	F-20F("F-(F-Nr6   r:   r;   r4   rI   rI   E   s    ar;   rI   c                       e Zd Zd Zy)verifyForgetPasswordOTPc                    	 |j                   j                  d      j                         j                         }|s,t	        t
        j                  ddt
        j                        S |j                   j                  d      }|s,t	        t
        j                  ddt
        j                        S t        j                  j                  |      j                         }|s,t	        t
        j                  ddt
        j                        S t        j                  j                  ||	      j                         }|rt	        t
        j                  d
d      S t	        t
        j                  dd      S # t        $ r?}t	        t
        j                  t        |      dt
        j                        cY d }~S d }~ww xY w)Nr   rK   )status_codestatus_messager   rN   zotp is Requiredr   zEmail not exist)r   rU   zSuccessfully VerifiedzInvalid otp)r    r!   r"   r$   r   r   r%   r   r&   r'   existsr(   rF   r+   r-   r,   )r.   r/   r   rN   email_checkr2   r3   s          r4   r5   zverifyForgetPasswordOTP.postd   s   	\<<##G,224::<Ev/J/J\o px~  yT  yT  U  U,,""5)Cv/J/J\m nw}  xS  xS  T  T ///>EEGK0K0K]n!ow}  xS  xS  T  T--eRU-V\\^Hv/A/ASj kllv/J/J\i jkk 	\v/T/Tfijkfl mu{  v[  v[  \  \	\s9   A$E5 'AE5 0AE5 AE5 E5 5	F=>4F82F=8F=Nr6   r:   r;   r4   r_   r_   c   s    \r;   r_   c                       e Zd Zd Zy)TermsConditionc                    t         j                  j                  d      j                         }|st	        ddit
        j                        S |j                  |j                  |j                  d}t	        |t
        j                        S )Nz-updated_atdetailzNo terms found.r   )idtitlecontent)r   r&   order_byr(   r   r   rR   ri   rj   rk   rF   )r.   r/   termsr    s       r4   r!   zTermsCondition.getx   sp    "**33MBHHJX'89&B[B[\\ (([[}}

 V%7%788r;   N)r7   r8   r9   r!   r:   r;   r4   rf   rf   w   s    
9r;   rf   c                       e Zd Zd Zd Zy)UserProfilec                    |j                   j                  d      }	 t        j                  j                  |      }t	        d|j
                  |j                  |j                  |j                  r%|j                  |j                  j                        nd |j                  |j                  |j                  dt        j                        S # t        j                   $ r  t	        ddit        j"                        cY S w xY w)Nr   r   zProfile fetched successfully)r   r   r   phone_numberimageis_profile_completed
created_at
updated_atr   r   User not found)r    r!   r   r&   r   r   r   rq   rr   build_absolute_uriurlrs   rt   ru   r   rF   rB   rR   )r.   r/   r   rG   s       r4   r!   zUserProfile.get   s      )
	]??&&U&3D9		 $ 1 1GKzz33DJJNNCW[(,(A(A"oo"oo	 ((	* 	* ## 	]Y(89&B[B[\\	]s   B0C 0D Dc           	         |j                   j                  d      }|j                   j                  d      }|j                   j                  d      }|j                  j                  d      }	 t        j                  j                  |      }|r||_        |r||_        |r||_        d|_        |j                          t        d|j
                  |j                  |j                  |j                  r%|j                  |j                  j                        nd dt        j                  	      S # t        j                   $ r  t        d
dit        j"                  	      cY S w xY w)Nr   r   rq   rr   r   TzProfile updated successfully)r   r   r   rq   rr   r   r   rv   )r    r!   FILESr   r&   r   rq   rr   rs   rV   r   r   rw   rx   r   rF   rB   rR   )r.   r/   r   r   phonerr   rG   s          r4   r5   zUserProfile.post   s'     )||'  0!!'*
	]??&&U&3D 	$)!"
(,D%IIK9		 $ 1 1GKzz33DJJNNCW[ ((* * ## 	]Y(89&B[B[\\	]s   .CD0 00E#"E#N)r7   r8   r9   r!   r5   r:   r;   r4   ro   ro      s    ]*]r;   ro   )%xml.saxr   django.shortcutsr   machine_shopr   	panel_apir   panel_api.modelsr   r   r	   r
   rest_framework.responser   rest_framework.viewsr   rest_frameworkr   django.contrib.auth.hashersr   r   rest_framework_simplejwt.tokensr   xml.sax.handlerxmlrS   django.template.loaderr   django.corer   r   r=   rI   r_   rf   ro   r:   r;   r4   <module>r      s     # !  8 : : , ( ! E 8   3 ]7 ]2& &4a a<\g \(9W 95]' 5]r;   