
    g=8                        d dl mZ d dlmZ d dlmZ ddlT 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 d dlZd dlZd dlZd dlZd dlmZ d dl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 G d de          Z G d de          ZdS )    )APIView)Responsestatus   )*)settings)User)RefreshToken)django_pbkdf2_sha256)render_to_string)mailNc                       e Zd Zd ZdS )Registerc                    	 |j         }|                    d          }|                    d          }|                                }t          |           |                    d          }|                    d          }|                    d          }|r|r|st	          ddit
          j                  S t          j        |          }t          j
                            |	                                          }	|	rt	          dd
it
          j                  S t          j        ddd          }
t          j
                            ||||
||          }	|
|	_        |	                                 d}t'          dd|
i          }|}t(          j        }|}t-          j        ||||g|           	 t-          j        ||||g|           n4# t0          $ r'}t	          ddit
          j                  cY d }~S d }~ww xY wt	          ddi          S # t0          $ r4}t	          dt5          |          it
          j                  cY d }~S d }~ww xY w)N	full_nameemailpasswordphoneNumbercountryCodemessagez$All required fields must be providedr   r   zThe email is already registered  '     )r   r   r   otpcountry_codephone_numberVerify Accountemail_verification.htmlr   html_messagezYour account has been created, but we encountered an issue sending the verification email. Please contact support for assistance.zHYou have been successfully registered with us. Please verify your email.)datagetlowerprintr   r   HTTP_400_BAD_REQUESThandlerhashr
   objectsfilterfirstHTTP_409_CONFLICTrandom	randrangecreater   saver   r	   EMAIL_HOST_USERr   	send_mail	ExceptionHTTP_500_INTERNAL_SERVER_ERRORstr)selfrequestr#   r   r   r   r   r   new_passwordapp_user_objthe_otpsubjectr"   plain_message
from_emailtoemail_errores                     7/var/www/html/Kila-kolis-project/Kolis/userapi/views.pypostzRegister.post1   s   9V
,4xx$$988G5	5<<<hhz""8-((;-((;  my m mY FGPVPkllll ,x((< ,%%E%2288::< UY AB6Kcdddd T4++G<&&	 '  L LG#$=w?OPPL M)J	BN7M:t,WWWWU	^G]J<XXXXX U U Ui  "e  f  ou  oT  U  U  U  U  U  U  U  U  UU Iij
k
kk	 V V V
Is1vv&v/T
U
U
UUUUUUUVs\   B5H 8A$H BH 2G H 
G>G93G>4H 9G>>H 
I)IIIN__name__
__module____qualname__rC        rB   r   r   0   s(        :V :V :V :V :VrI   r   c                       e Zd Zd ZdS )SocialLoginc                 ~   	 |j         }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|                    d          }|r|st          ddit          j        	          S |st          dd
it          j        	          S |st          ddit          j        	          S |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
          j                            |                                          }	|	s%t
          j        	                    ||||||          }	t          j        |	          }
|	j        |	j        |	j        |	j        t!          |
          t!          |
j                  d}t          d|d          S # t$          $ r4}t          dt!          |          it          j        	          cY d }~S d }~ww xY w)Nprovider_idr   r   	social_iddevice_type	fcm_tokenr   z$Provider and social_id are required.r   zfull_name is requiredemail is requiredzdevice_type is requiredzfcm_token is required)rN   )r   rN   rM   r   rO   rP   idr   r   is_profile_completedrefreshaccessSuccessr   r#   )r#   r$   r   r   r'   r
   r*   r+   r,   r0   r   for_userrS   r   r   rT   r6   access_tokenr4   r5   )r7   r8   r#   rM   r   r   rN   rO   rP   r:   refresh_tokenallDatarA   s                rB   rC   zSocialLogin.posto   so   *V
,4-((;88G5xx$$9xx$$9-((;xx$$9
 mY mY FGPVPkllll
 ^Y 78A\]]]]
 ZY 34V=XYYYY
 ZY 34V=XYYYY
 `Y 9:6C^____
 ^Y 78A\]]]] ,%%	%::@@BB<
 X<&&iU{Y ' X XL  (66='(=M""=-..	 	7 y'::
;
;;	 V V V
Is1vv&v/T
U
U
UUUUUUUVsC   B%G> (G> G> &G> G> $G> B:G> >
H<)H71H<7H<NrD   rH   rI   rB   rK   rK   n   s(        +V +V +V +V +VrI   rK   c                       e Zd Zd ZdS )OtpVerificationc                    	 |j         }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S 	 t
          j                            ||          }n5# t          $ r(}t          di d	t          j                  cY d }~S d }~ww xY wd
|_        d
|_	        |
                                 t          j        |          }|j        |j        |j        |j        t#          |          t#          |j                  d}t          d|d	          S # t          $ r4}t          dt#          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   rQ   r   otp is requiredr   r   Invalid otprX   TrR   rW   )r#   r$   r   r   r'   r
   r*   r4   email_verifiedis_verifiedr1   r   rY   rS   r   r   rT   r6   rZ   r5   )	r7   r8   r#   r   r   r:   rA   r[   r\   s	            rB   rC   zOtpVerification.post   s   T488G5	%3
 XY236;VWWWW
 VY019TUUUU\<##%C#88LL
 \ \ \}B77v?Z[[[[[[[[[\ "&<"<(66=&'<=!!-,-- 7 iw77
8
88	 T T T
Ic!ff%V-R
S
S
SSSSSSSTsU   AE E 2!B E 
CC;C<E CBE 
F)F FFNrD   rH   rI   rB   r^   r^      s(        T T T T TrI   r^   c                       e Zd Zd ZdS )registerResendOTPc                 (   	 |j         }|                    d          }|                                }t          j                            |                                          }|st          ddit          j	                  S t          j        ddd          }||_        |                                 d	}t          d
d|i          }|}t          j        }	|}
t#          j        |||	|
g|           	 t#          j        |||	|
g|           n4# t&          $ r'}t          ddit          j                  cY d }~S d }~ww xY wt          ddi          S # t&          $ r4}t          dt+          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   zThis email is not in databaser   r   r   r   r   r    r   r!   z^We encountered an issue sending the verification email. Please contact support for assistance.z0Otp send successfully. Please verify your email.)r#   r$   r%   r
   r*   r+   r,   r   r   r-   r.   r/   r   r1   r   r	   r2   r   r3   r4   r5   r6   )r7   r8   r#   r   r:   r;   r<   r"   r=   r>   r?   r@   rA   s                rB   rC   zregisterResendOTP.post   s   V
,488G5	5 ,%%E%2288::<
 cY ?@Iabbbb D$**7 <7"#<ug>NOO<=(:2>'=*rdVVVVqN7M:t,WWWWW
 q q qY  !A  B  KQ  Kp  q  q  q  q  q  q  q  q  qq IQR
S
SS	 V V V
Is1vv&v/T
U
U
UUUUUUUVsU   B E A/E 3D E 
D?D:4D?5E :D??E 
F)FFFNrD   rH   rI   rB   rf   rf      s(         V  V  V  V  VrI   rf   c                       e Zd Zd ZdS )	LoginUserc                    	 |j         }|                    d          }|                                }|                    d          }|st          ddit          j                  S |st          ddit          j                  S t          j                            |          	                                }|dk    rt          dd	it          j
                  S t          j                            |d
d
                                          }|st          ddit          j                  S |j        }t          j        ||          }t!          j        |          }	|j        |j        |j        |j        t-          |	          t-          |	j                  d}
t          d|
d          S # t0          $ r4}t          dt-          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   rQ   r   zpassword is requiredr   r   z:This email does not exist in our database, please registerT)r   r   end_date__isnullz=Your account has not been activated, Please contact to admin.rR   zLogin SuccessfullyrX   )r#   r$   r%   r   r   r'   r
   r*   r+   countHTTP_404_NOT_FOUNDr,   HTTP_401_UNAUTHORIZEDr   r(   verifyr   rY   rS   r   r   rT   r6   rZ   r4   r5   )r7   r8   r#   r   r   userr:   check_passwordcheckr[   r\   rA   s               rB   rC   zLoginUser.post   s   9T
,488G5	5hhz""8  XY236;VWWWW
 [Y56f>YZZZZ<U++11334
aiiY[\djd}~~~~<&&U$PT&UU[[]]<
 EY^_gm  hD  E  E  E  E )>>(>2250  (66=&'<=!!-,-- 7 2'BB
C
CC 
 T T T
Ic!ff%V-R
S
S
SSSSSSSTs9   A#F+ &F+ AF+ AF+ -A=F+ +
G)5)G$G)$G)NrD   rH   rI   rB   ri   ri      s(        :T :T :T :T :TrI   ri   c                       e Zd Zd ZdS )ForgetPasswordc                    	 |j         }|                    d          }|st          ddi          S t          j                            |                                          }|dk    rt          ddit          j                  S t          j                            |          	                                }|rt          j        dd	d
          }||_        |                                 d}t          dd|i          }|}	t          j        }
|}t#          j        ||	|
|g|           	 t#          j        ||	|
|g|           n4# t&          $ r'}t          ddit          j                  cY d }~S d }~ww xY wt          ddi          S t          ddi          S # t&          $ rC}t+          |           t          dt-          |          it          j                  cY d }~S d }~ww xY w)Nr   r   zEmail is requiredr   r   zPThis email does not exist in our database, please enter the valid email address.r   r   r   r   zForgot Passwordzforget_password_email.htmlr   r!   z>Failed to send the verification email. Please try again later.z7Reset password otp has been sent to your email address.zEmail not exists)r#   r$   r   r
   r*   r+   rl   r   rm   r,   r.   r/   r   r1   r   r	   r2   r   r3   r4   r5   r&   r6   )r7   r8   r#   r   rp   r:   r;   r<   r"   r=   r>   r?   r@   rA   s                 rB   rC   zForgetPassword.post!  sY   U<DHHWE 6i 34555Le,,2244Dqyyi rs  |B  |U  V  V  V  VL''e'44::<<L 5dD!,,W\ W$%AE7CSTT\!]*Z
R	^G]J<XXXXS
nWmZ"LYYYYY S S Sy"bclr  mR  S  S  S  S  S  S  S  S  SS i YZ[[[i 23444
 U U U	!HHHYs1vv&f.STTTTTTTTTUs`   .F AF B#F *E F 
E6E1+E6,F 1E66F 
F 
G(%8G#G(#G(NrD   rH   rI   rB   rt   rt      s(         U  U  U  U  UrI   rt   c                       e Zd Zd ZdS )ForgetPasswordVerificationc                 ,   	 |j         }|                    d          }|                    d          }|st          ddit          j                  S |st          ddit          j                  S t
          j                            ||                                          }|st          di d	t          j                  S t          dd
i          S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r   r   rQ   r   r`   ra   rb   rX   rW   )r#   r$   r   r   r'   r
   r*   r+   r,   r4   r6   r5   )r7   r8   r#   r   r   r:   rA   s          rB   rC   zForgetPasswordVerification.postF  s,   T488G5	%3
 XY236;VWWWW
 VY019TUUUU,%%Ec%::@@BB<
 \}B77v?Z[[[[
Ii(
)
))	 T T T
Ic!ff%V-R
S
S
SSSSSSSTs1   AC C 1AC C 
D)DDDNrD   rH   rI   rB   rw   rw   E  s(        T T T T TrI   rw   c                       e Zd Zd ZdS )SetForgetPasswordc                    	 |j         }|                    d          }|                    d          }|                    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
          j                            ||	                                          }t          j
        |          }|r3||_        d |_        |                                 t          dd
i          S t          ddit          j                  S # t          $ r4}t          dt          |          it          j                  cY d }~S d }~ww xY w)Nr   r9   r   r   znew_password is requiredr   rQ   r`   ra   rW   zSomething went wrong)r#   r$   r   r   r'   r
   r*   r+   r,   r(   r)   r   r   r1   r4   r6   r5   )	r7   r8   r#   r   r9   r   r:   encrypt_passwordrA   s	            rB   rC   zSetForgetPassword.postY  s   T488G5((>**<	%3
 _Y9:&B]^^^^
 XY236;VWWWW
 VY019TUUUU,%%Ec%::@@BB<l<00 [,LLYy)***Y56f>YZZZZ	 T T T
Ic!ff%V-R
S
S
SSSSSSSTs7   A$D> 'D> D> %A;D> !D> >
E<)E71E<7E<NrD   rH   rI   rB   rz   rz   X  s(        T T T T TrI   rz   ) rest_framework.viewsr   rest_framework.responser   rest_frameworkr   modelsdjango.confr	   r
   rest_framework_simplejwt.tokensr   passlib.hashr   r(   django.template.loaderr   django.corer   mathr.   pytzstringstriper   rK   r^   rf   ri   rt   rw   rz   rH   rI   rB   <module>r      s   ) ( ( ( ( ( , , , , , , ! ! ! ! ! !                       8 8 8 8 8 8 8 8 8 8 8 8 3 3 3 3 3 3       ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !, !           
;V ;V ;V ;V ;Vw ;V ;V ;V|,V ,V ,V ,V ,V' ,V ,V ,V`T T T T Tg T T T@!V !V !V !V !V !V !V !VH;T ;T ;T ;T ;T ;T ;T ;T|!U !U !U !U !UW !U !U !UJT T T T T T T T&T T T T T T T T T TrI   