a
    ʸdڥ                     @   s  d dl mZ d dlmZ d dlmZ ddlT d dlT d dlZd dl	m	Z	 ddl
T d dlmZ d d	lmZ d dlZd dlT d
d ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZ G d(d) d)eZ!G d*d+ d+eZ"G d,d- d-eZ#G d.d/ d/eZ$dS )0    )APIView)Responsestatus   )*N)datetime)settings)django_pbkdf2_sha256c                  C   s`   t j  } | rX| jsdS | j}|dd  }t|d }t|}|d}dt| S dS d S )NZCUS00001   r      ZCUS)Buyerobjectsalllastcustomer_idintstrzfill)ZlastObjZtheId r   */var/www/html/Beni/beni/auth_apis/views.pygernateUserId   s    

r   c                   @   s   e Zd Zdd ZdS )loginc              
   C   s  z2t |jd}| rtjj|jd|jddd }t	
ddd}|s|tjj|jd|jddd	d
}||_t |_|jd}|sttjddW S |jd}|sttjddW S ||_||_|  ttjd|dW S |j}i }| D ]\}	}
|
} q q
ttj|dW S W nH ty| } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Ndataisd_codephone_number0r   r     '  r   r   r   r   is_buyerdevice_typezdevice_type is requiredstatus_codestatus_messagedevice_tokenzdevice_token is requiredSuccessr%   r&   Zloginotpr   )LoginSerializerr   is_validUserr   filtergetlstripfirstrandom	randrangecreateotp_generatedr   nowotp_created_atr   r   HTTP_400_BAD_REQUESTr#   r'   saveHTTP_200_OKerrorsitems	ExceptionprintHTTP_500_INTERNAL_SERVER_ERRORr   )selfrequest
serializercustomerObjtheotpr#   r'   default_errors	new_error
field_namefield_errorser   r   r   post!   s8    *(

z
login.postN__name__
__module____qualname__rI   r   r   r   r   r       s   r   c                   @   s   e Zd Zdd ZdS )registerPanelc              
   C   s  zRt |jd}| rtjj|jd|jddddd }|r^t	t
jddW S tjj|jd|jdddd	d }|rt	t
jd
dW S |jd}|jdd}|jd}t|}tddd}	|	}
tjj|t |||
dd}t	t
jd|
dW S |j}i }| D ]\}}|} q@q*t	t
j|dW S W nH ty } z.t| t	t
jt|dt
jdW  Y d }~S d }~0 0 d S )Nr   r   r   r   T)r   r   r"   is_otp_verifiedz0This phone number is already registered with us.r$   Fz+OTP is not verified.Please verify it again.passwordr   r    r   r   )rP   r6   r   r   r4   r"   r(   r)   r   )ZRegisterSerializerr   r+   r,   r   r-   r.   r/   r0   r   r   r7   handlerhashr1   r2   r3   r   r5   r9   r:   r;   r<   r=   r>   r   )r?   r@   rA   rB   ZcustomerObjUvr   r   string_passwordrP   rC   r4   rD   rE   rF   rG   rH   r   r   r   rI   C   s4    
..

zregisterPanel.postNrJ   r   r   r   r   rN   B   s   rN   c                   @   s   e Zd Zdd ZdS )verifyOtpPannelc              
   C   s  z0t |jd}| r|jd}|jdd}|jd}tjj||d }t	|j
t	|krd|_tt }||_|  tjj|d }|stjj|jt d	 |j|j|j|j|j|jd
}	ttjd|	dW S ttjddW S n:|j}
i }|
 D ]\}}|} qqttj|dW S W nH tyz } z.t| ttj t|dtj dW  Y d }~S d }~0 0 d S )Nr   r   r   r   otpr   Tuser_idrW   r   )r"   r   phonetokenrO   isProfileCompleter(   r%   r&   r   Invalid otpr$   r   )!ZVerifyOtppannelSerializerr   r+   r.   r/   r,   r   r-   r0   r   r4   rO   r   gernateTokenrZ   r8   r   r3   idr   r"   r   r   is_profile_completedr   r   r9   r7   r:   r;   r<   r=   r>   )r?   r@   rA   r   r   Z	enter_otpZcust_objtheToken	buyer_objallDatarD   rE   rF   rG   rH   r   r   r   rI   d   sB    

zverifyOtpPannel.postNrJ   r   r   r   r   rT   c   s   rT   c                   @   s   e Zd Zdd ZdS )	resendOtpc                 C   s   |j d}|s ttjddS |j dd}|sFttjddS tjj||dd	 }|spttjd	dS t
d
dd}||_|  ttjd|dS d S )Nr   zIsd code is requiredr$   r   r   zPhone number is requiredr   )r   r   r"   zPhone number not existr   r    r   zOtp Send successfullyr)   )r   r.   r   r   r7   r/   r,   r   r-   r0   r1   r2   r4   r8   r9   )r?   r@   r   r   user_objrC   r   r   r   rI      s    zresendOtp.postNrJ   r   r   r   r   rd      s   rd   c                   @   s   e Zd Zdd ZdS )	verifyOtpc              
   C   s  z0t |jd}| rtjj|jd|jdd|jddd }|rt	t
 }||_|  tjj|d }|stjj|jt d	 |j|j|j|j|jd
}td| tjj|jd dd ttjd|dW S ttjddW S n:|j}i }| D ]\}	}
|
} qqttj|dW S W nH tyz } z.t| ttjt	|dtjdW  Y d }~S d }~0 0 d S )Nr   r   r   r   rU   r   )r   r   r4   r"   rV   rX   )r"   r   rY   rZ   r[   z
all sata==z% has registered successfully with us.Tmessageis_readr(   r\   r]   r$   r   )VerifyOtpSerializerr   r+   r,   r   r-   r.   r/   r0   r   r^   rZ   r8   r   r3   r_   r   r"   r   r   r`   r=   AdminNotificationsr   r   r9   r7   r:   r;   r<   r>   )r?   r@   rA   rB   ra   rb   rc   rD   rE   rF   rG   rH   r   r   r   rI      s<    6


zverifyOtp.postNrJ   r   r   r   r   rf      s   rf   c                   @   s   e Zd Zdd Zdd ZdS )updateProfilec                 C   s  z|j d}|s$ttjddW S ztjj|d}W n< tyr } z$ttjddtjdW  Y d }~W S d }~0 0 t	jj
|jd }|j|j|j|j|j|j|j|j|j|j|jd}ttjd	|d
W S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )NHTTP_AUTHORIZATIONsession_token is requiredr$   rZ   Invalid session tokenr   rV   )emailr   r   avatardob
first_name	last_namerP   notification_enabledr`   wallet_amountr(   r\   )METAr.   r   r   r7   r,   r   r<   HTTP_401_UNAUTHORIZEDr   r-   r_   r0   rq   r   r   rr   rs   rt   ru   rP   rv   r`   rw   r9   r=   r>   r   r?   r@   session_tokenre   rH   rb   alldatar   r   r   r.      s2    .zupdateProfile.getc                 C   s  zP|j d}|s&ttjddW S ztjj|d}W n< tyt } z$ttjddtjdW  Y d }~W S d }~0 0 t	jj
|jd }tjj
|jdd	j|jd
 }|dkrtdditjdW S t|jd}| r|jd|_|jd|_|jd|_|jdd|_|jd|_|jd|_|jd}|rbt|}	|	|_d|_|jdrt|jd}
ttj d |
 }
t|
|_!|"  |"  |j|j|j|j|j|j#|j!|j|j|j|j|j$d}t%jj&|jd |j d dd ttj'd|dW S |j(}i }|) D ]\}}|} q>q(ttj|dW S W nH ty } z.t*| ttj+t|dtj+dW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   rV   rq   rq   r_   r   r&   !This email is already registered.r   rs   r   r   r   rt   ru   rP   Trr   /)r_   rq   rs   r   r   rZ   rr   rt   ru   rP   r`   rw     has updated their profilerg   r(   r\   ),rx   r.   r   r   r7   r,   r   r<   ry   r   r-   r_   r0   r   excludecountUpdateProfileSerializerr+   rq   rs   r   r/   r   rt   ru   rQ   rR   rP   r`   uploadTheProfiler   r	   BASE_URLrr   r8   rZ   rw   rk   r3   r9   r:   r;   r=   r>   )r?   r@   r{   re   rH   rb   check_emailrA   rS   rP   fileUrlrc   rD   rE   rF   rG   r   r   r   rI      sn    .$


 
zupdateProfile.postNrK   rL   rM   r.   rI   r   r   r   r   rl      s   rl   c                   @   s   e Zd Zdd ZdS )updateNotificationSettingsc              
   C   s
  z|j d}|s$ttjddW S ztjj|d}W n< tyr } z$ttjddtjdW  Y d }~W S d }~0 0 |j	d}|sttjddtjdW S ||_
|  ttjd	|d
W S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   notification_datazNotification data is requiredr(   r\   )rx   r.   r   r   r7   r,   r   r<   ry   r   rv   r8   r9   r=   r>   r   )r?   r@   r{   re   rH   r   r   r   r   rI     s"    .zupdateNotificationSettings.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )updateProfilePanelc                 C   s  z|j d}|s$ttjddW S ztjj|d}W n< tyr } z$ttjddtjdW  Y d }~W S d }~0 0 t	jj
|jd }|j|j|j|j|j|j|j|j|j|jd
}ttjd	|d
W S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   rV   )
rq   r   r   rr   rs   rt   ru   rP   r`   rw   r(   r\   )rx   r.   r   r   r7   r,   r   r<   ry   r   r-   r_   r0   rq   r   r   rr   rs   rt   ru   rP   r`   rw   r9   r=   r>   r   rz   r   r   r   r.   +  s0    .zupdateProfilePanel.getc                 C   s~  z.|j d}|s&ttjddW S ztjj|d}W n< tyt } z$ttjddtjdW  Y d }~W S d }~0 0 t	jj
|jd }t|jd}tjj
|jd	d
j|jd }|dkrtdditjdW S | r|jd	|_|jd|_|jd|_|jd|_|jd|_|jdd|_d|_|jdrzt|jd}ttjd | }t||_|  |  |j|j|j|j|j|j|j|j |j|j!|j|j"d}	t#jj$|jd |j d dd ttj%d|	dW S |j&}
i }|
' D ]\}}|} qqttj|dW S W nH tyx } z.t(| ttj)t|dtj)dW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   rV   r   rq   r}   r~   r   r&   r   rs   rt   ru   r   r   r   Trr   r   )r_   rq   rs   rt   ru   r   r   rZ   rr   rP   r`   rw    r   rg   r(   r\   )*rx   r.   r   r   r7   r,   r   r<   ry   r   r-   r_   r0   r   r   r   r   r+   rq   rs   rt   ru   r   r/   r   r`   r   r   r	   r   rr   r8   rZ   rP   rw   rk   r3   r9   r:   r;   r=   r>   )r?   r@   r{   re   rH   rb   rA   r   r   rc   rD   rE   rF   rG   r   r   r   rI   E  sf    .$

 
zupdateProfilePanel.postNr   r   r   r   r   r   *  s   r   c                   @   s   e Zd Zdd Zdd ZdS )getAddressesc           	      C   s:  z|j d}|s$ttjddW S ztjj|d}W n< tyr } z$ttjddtjdW  Y d }~W S d }~0 0 t	jj
|jd}g }|D ]L}|j|j|j|j|j|j|j|j|j|j|j|j|j|jd}|| qttjd	|d
W S  ty4 } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   rV   r_   address_labelnameaddress_linecountrystatecitylatitude	longitudepin_coder   r   user
is_defaultr(   r\   )rx   r.   r   r   r7   r,   r   r<   ry   	Addressesr-   r_   r   r   r   r   r   r   r   r   r   r   r   rW   r   appendr9   r=   r>   r   )	r?   r@   r{   re   rH   address_objrc   ir|   r   r   r   r.   ~  s>    .zgetAddresses.getc                 C   st  z$|j d}|s&ttjddW S ztjj|d}W n< tyt } z$ttjddtjdW  Y d }~W S d }~0 0 t	|j
d}| rtjj|jdd	 }|rd
|_|  td|j
d td|j
d td|j
d tjj|j
d|j
d|j
d|j
d|j
d|j
d|j
d|j
d|j
d|j
d|j
dd|dd tjj|jd}g }|D ]N}	|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j |	jd}
|!|
 qttj"d|dW S |j#}i }|$ D ]\}}|} qqttj|dW S W nH tyn } z.t| ttj%t&|dtj%dW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   r   TrW   r   Fr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   rV   r   zAddress added successfullyr\   )'rx   r.   r   r   r7   r,   r   r<   ry   AddAddressSerializerr   r+   r   r-   r_   r0   r   r8   r=   r3   r/   r   r   r   r   r   r   r   r   r   r   r   rW   r   r9   r:   r;   r>   r   )r?   r@   r{   re   rH   rA   r   
addres_objrc   r   r|   rD   rE   rF   rG   r   r   r   rI     sz    .











zgetAddresses.postNr   r   r   r   r   r   }  s   #r   c                   @   s   e Zd Zdd ZdS )setDefaultAddressc                 C   s  zX|j d}|s&ttjddW S ztjj|d}W n< tyt } z$ttjddtjdW  Y d }~W S d }~0 0 |j	d}|sttjddtjdW S t
jj|jd	d
 }|rd|_|  t
jj||jdjd	d t
jj|jd}g }|D ]N}	|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	j|	jd}
||
  qttjd|dW S  ty } z.t| ttj t!|dtj dW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   
address_idAddress Id is requiredTr   Fr_   rW   )r   rV   r   z Default address set successfullyr\   )"rx   r.   r   r   r7   r,   r   r<   ry   r   r   r-   r_   r0   r   r8   updater   r   r   r   r   r   r   r   r   r   r   rW   r   r9   r=   r>   r   )r?   r@   r{   re   rH   r   ZAddress_objr   rc   r   r|   r   r   r   rI     sN    .zsetDefaultAddress.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )editAddressesc                 C   s  zD|j d}|s&ttjddW S ztjj|d}W n< tyt } z$ttjddtjdW  Y d }~W S d }~0 0 |j	d}|sttjddW S t
|j	d	}| r
tjj|d
 }|rv|j	d|_|j	d|_|j	d|_|j	d|_|j	d|_|j	d|_|j	d|_|j	d|_|j	d|_|j	d|_|j	dd|_||_|  nttjddtjdW S tjj|jd}g }	|D ]N}
|
j|
j|
j|
j|
j|
j|
j|
j|
j|
j|
j|
j|
j|
jd}|	 | qttj!d|	dW S |j"}i }|# D ]\}}|} q2qttj|dW S W nH ty } z.t$| ttj%t&|dtj%dW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   zNo address foundrV   r   zAddress edit successfullyr\   )'rx   r.   r   r   r7   r,   r   r<   ry   r   r   r+   r   r-   r0   r   r   r   r   r   r   r   r   r   r   r/   r   r   r8   r_   rW   r   r   r9   r:   r;   r=   r>   r   )r?   r@   r{   re   rH   r   rA   Zaddress_post_idr   rc   r   r|   rD   rE   rF   rG   r   r   r   rI     st    .


zeditAddresses.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )deleteAddressc           
      C   sz  z*|j d}|s&ttjddW S ztjj|d}W n< tyt } z$ttjddtjdW  Y d }~W S d }~0 0 |j	d}|sttjddtjdW S t
jj||jd	  t
jj|jd
}g }|D ]L}|j|j|j|j|j|j|j|j|j|j|j|j|j|jd}	||	 qttjd|dW S  tyt } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nrm   rn   r$   ro   rp   r   r   r   r   rV   r   zAddress deleted succesfullyr\   ) rx   r.   r   r   r7   r,   r   r<   ry   r   r   r-   r_   deleter   r   r   r   r   r   r   r   r   r   r   rW   r   r   r9   r=   r>   r   )
r?   r@   r{   re   rH   r   r   rc   r   r|   r   r   r   rI   S  sF    .zdeleteAddress.postNrJ   r   r   r   r   r   R  s   r   c                   @   s   e Zd Zdd ZdS )resetPasswordc              
   C   s  |j d}|s6|ds*ttjddS |jd }n|dd}ztjj	|d
 }W n: ty } z"ttjddtjd	W  Y d }~S d }~0 0 t|jd
}| rDtjj|jd}||jddkrttjddtjd	S ||jddkrttjddtjd	S |jd}|| |  ttjdddS |j}i }	| D ]\}
}|}	 qlqVttj|	dS d S )Nrm   r{   rn   r$   zToken r   ro   rp   r   r   r}   old_passwordFz$Does not match with the old passwordconfirm_passwordT0You cannot set new password same as old passwordzSuccessfully Password Changedr\   )rx   r.   GETr   r   r7   replacer,   r   r-   r0   r<   ry   ZResetPasswordSerializerr   r+   rq   check_passwordset_passwordr8   r9   r:   r;   )r?   r@   r{   rB   rH   rA   r   rP   rD   rE   rF   rG   r   r   r   rI   {  s6    
,


zresetPassword.postNrJ   r   r   r   r   r   z  s   r   c                   @   s   e Zd Zdd ZdS )
loginPanelc              
   C   sT  t |jd}| rtjj|jd|jddd }|dkr^t	t
jddt
jd	S tjj|jd|jddd }tjj|jd
 }|j}t|jd|}|r |j|j|j|j|j|j|j|j|jd	}|  t	t
jd|dS t	t
jddt
jd	S n8|j}	i }
|	 D ]\}}|}
 q@q*t	t
j|
dS d S )Nr   r   r   r   r   r   zAThis phone number does not exist in our database, please registerr$   r   rV   rP   )	r_   rq   rs   r   r   rt   ru   rr   rZ   r(   r\   zInvalid password)ZloginSerializerr   r+   r,   r   r-   r.   r/   r   r   r   r7   r0   r   r_   rP   rQ   verifyrq   rs   r   r   rt   ru   rr   rZ   r8   r9   r:   r;   )r?   r@   rA   r   ZuserObjrb   Znew_passcheckrc   rD   rE   rF   rG   r   r   r   rI     s:    
**

zloginPanel.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )forgetPasswordc           	      C   s   t |jd}| rtjj|jd|jddd }|sXt	t
jddt
jdS td	d
d}||_|  t	t
jd|dS |j}i }| D ]\}}|} qqt	t
j|dS d S )Nr   r   r   r   r   ,This account does not exists in our databaser$   r   r   r    r   r(   r%   r&   rU   )r*   r   r+   r,   r   r-   r.   r/   r0   r   r   r7   r1   r2   forgot_password_otpr8   r9   r:   r;   )	r?   r@   rA   
user_checkrC   rD   rE   rF   rG   r   r   r   rI     s    *zforgetPassword.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )forgetPasswordVerifyc                 C   s   t |jd}| rvtjj|jd|jdd|jddd }|r^t	t
jdd	S t	t
jd
d	t
jdS n4|j}i }| D ]\}}|} qqt	t
j|d	S d S )Nr   r   r   r   rU   r   )r   r   r   r"   zVerified Successfullyr$   r]   r   )rj   r   r+   r,   r   r-   r.   r/   r0   r   r   r9   r7   r:   r;   )r?   r@   rA   rB   rD   rE   rF   rG   r   r   r   rI     s    6zforgetPasswordVerify.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )forgetPasswordSetc           
      C   s   t |jd}| rtjj|jd|jdddd }|jd}|jd}||kr|	|d	krt
tjd
dtjdS |r|| |  t
tjddS t
tjddtjdS n4|j}i }| D ]\}}	|	} qqt
tj|dS d S )Nr   r   r   r   r   r!   rP   r   Tr   r$   r   zPassword changed successfullyz*Password and confirm password are not same)ZForgetPasswordSerializerr   r+   r,   r   r-   r.   r/   r0   r   r   r   r7   r   r8   r9   r:   r;   )
r?   r@   rA   rB   new_passwordr   rD   rE   rF   rG   r   r   r   rI     s&    ,
zforgetPasswordSet.postNrJ   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )forgetResendOtpc                 C   s   t |jd}| rtjj|jd|jddd }|sRt	t
jddS tdd	d
}||_|  t	t
jd|dS t	|jt
jdS d S )Nr   r   r   r   r   r   r$   r   r    r   zOtp resend successfullyr   r   )r*   r   r+   r,   r   r-   r.   r/   r0   r   r   r7   r1   r2   r   r8   r9   r:   )r?   r@   rA   r   rC   r   r   r   rI     s    *zforgetResendOtp.postNrJ   r   r   r   r   r     s   r   )%Zrest_framework.viewsr   Zrest_framework.responser   rest_frameworkr   rA   Zauth_apis.modelsr1   r   	functionsdjango.confr	   passlib.hashr
   rQ   jsonZadmin_panel.modelsr   r   rN   rT   rd   rf   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s<   "!%"XSf,C(!$