o
    h1                     @   s\  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mZ ddlmZ d d	lT d d	lT d d
l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T d d	lT d dlm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 )#    )APIView)Responsestatus)make_passwordcheck_password)RefreshToken   )authenticated)User)*)django_pbkdf2_sha256N)settings)render_to_string)	send_mail)mail)datetimec                   @      e Zd Zdd ZdS )userRegisterc                 C   s   |j d}|j d}|stdditjdS |s"tdditjdS tjj|d r4tdditjdS tjj	|t
|d	}tdd
itjdS )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   user r'   ?/home/esfera/Desktop/Rishu/Ai-agent/AiAgent/user_panel/views.pypost   s   zuserRegister.postN__name__
__module____qualname__r)   r'   r'   r'   r(   r          r   c                   @   r   )	loginUserc                 C   s   |j d}|j d}|stdditjdS |s"tdditjdS z	tjj|d}W n tjy>   tdditjd Y S w t	||j
sNtdditjdS t|}td	t|jt|d
tjdS )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&   r1   r'   r'   r(   r)   0   s*   
zloginUser.postNr*   r'   r'   r'   r(   r/   /   r.   r/   c                   @   r   )userChangePasswordc              
   C   s  zzt |}W n ty% } ztdt|itjdW  Y d }~W S d }~ww tjj|d	 }|s;tdditj
dW S tj 	 }|jdkrStd|jdtjdW S |jd}|setdd	itjdW S |jd
}|swtdditjdW S |j}t||}	|	dkrtdditjdW S |}
t|
}||_|  tddiW S  ty } ztdt|itjdW  Y d }~S d }~ww )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   r5   r   r3   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_objr>   r?   r   checkr   encrypt_passwordr'   r'   r(   r)   M   s@   $

"zuserChangePassword.postNr*   r'   r'   r'   r(   r8   L   r.   r8   c                   @   r   )userForgetPasswordc              
   C   s0  zv|j }|d  }|stddiW S tjj|d }|dkr-tddit	j
dW S tjj|d }|rptdd	d
}||_|  td|d |j}d}tdd|i}	|	}
tj}tj||
||g|	d td|	dW S tddiW S  ty } zt| tdt|it	jdW  Y d }~S d }~w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------------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   rD   rC   random	randrangeforgot_password_otprL   printr   r   r   EMAIL_HOST_USERr   r   rB   r5   rM   )r$   r%   r   r   r&   rP   theotpto_emailsubjectrX   plain_message
from_emailrO   r'   r'   r(   r)   q   s<   
"zuserForgetPassword.postNr*   r'   r'   r'   r(   rT   p   r.   rT   c                   @   r   )verifyForgetPasswordOTPc              
   C   s   z_|j d  }|sttjddtjdW S |j d}|s-ttjddtjdW S tjj	|d	 }|sDttjddtjdW S tjj	||d	}|rWttj
d
dW S ttjddW S  ty~ } zttjt|dtjdW  Y d }~S d }~ww )Nr   rU   status_codestatus_messager   rW   zotp is Requiredr   zEmail not exist)r   forget_password_otpzSuccessfully VerifiedzInvalid otp)r   r   rZ   r[   r   r   r   r   r   r    r7   rB   rM   r5   )r$   r%   r   rW   check_emailrP   rO   r'   r'   r(   r)      s$   &zverifyForgetPasswordOTP.postNr*   r'   r'   r'   r(   rg      r.   rg   c                   @   r   )changeForgetPasswordc           	   
   C   sL  z|j d  }|stdditjdW S tjj	|d
 }|s,tdditjdW S tj 
 }|jdkrDtd|jd	tjdW S |j d
}|sVtdditjdW S |j d}|shtdditjdW S ||krvtdditjdW S t|}||_|  tddiW S  ty } ztdt|itjdW  Y d }~S d }~ww )Nr   r   r   r   r   r;   Fr<   r=   r?   r@   confirm_passwordzconfirm password is requiredz+Password and confirm password are not same.rA   )r   r   rZ   r[   r   r   rD   r   r   r    rC   rE   rF   r   rG   r   rJ   rH   rK   r   rL   rB   r5   rM   )	r$   r%   r   rP   rQ   r?   rn   rS   rO   r'   r'   r(   r)      s4   

"zchangeForgetPassword.postNr*   r'   r'   r'   r(   rm      r.   rm   c                   @      e Zd Zdd Zdd ZdS )updateProfilec              
   C   s   zYzt |}td| W n ty* } ztdt|itjdW  Y d }~W S d }~ww tjj	|d
 }|s@tdditjdW S td| |j|j|j|jd}ttjd|dW S  tyv } ztdt|itjdW  Y d }~S d }~ww )	Nz=================r   r   r9   r;   )namegenderphone_numberimagezFetched Successfully)ri   rj   all_data)r
   r`   rB   r   r5   r   r3   r   r   r    rC   rD   rq   rr   rs   rt   r7   rM   )r$   r%   rN   rO   rP   ru   r'   r'   r(   r      s,   $
"zupdateProfile.getc           	   
   C   s  zpzt |}W n ty% } ztdt|itjdW  Y d }~W S d }~ww tjj|d	 }|s;tdditj
dW S |jd}|jd}|jd}|jd}||_||_||_||_|  td	| ttjd
dW S  ty } ztdt|itjdW  Y d }~S d }~ww )Nr   r   r9   r;   rq   rr   rs   rt   rP   zProfile updated successfullyrh   )r
   rB   r   r5   r   r3   r   r   r    rC   rD   r   r   rq   rr   rs   rt   rL   r`   r7   rM   )	r$   r%   rN   rO   rP   rq   rr   rs   rt   r'   r'   r(   r)      s2   $
"zupdateProfile.postNr+   r,   r-   r   r)   r'   r'   r'   r(   rp      s    rp   c                   @   r   )UploadImagesc              
   C   s   z"|j }|d}g }|D ]}t|}|| qttjd|dW S  ty? } ztdt|itj	dW  Y d }~S d }~ww )Nrt   rA   )ri   rj   r   r   r   )
r   getlistuploadTheDocumentappendr   r   r7   rB   r5   rM   )r$   r%   r   images
image_urlsrt   
image_pathrO   r'   r'   r(   r)      s   
"zUploadImages.postNr*   r'   r'   r'   r(   rw      r.   rw   c                   @   ro   )chatBotc                 C   s  zizt |}W n ty% } ztdt|itjdW  Y d }~W S d }~ww tjj|d	 }|s;tdditj
dW S tjjt|d}g }|D ]}||j|j|j|j|j|j|jd qHtd|dtjdW S  ty } ztd	t|d
tjdW  Y d }~S d }~ww )Nr   r   r9   r;   )user_id)r:   r   chatbot_namecategories_namedescriptionpdf_data
created_atrA   )r   r   Internal server errorr   details)r
   rB   r   r5   r   r3   r   r   r    rC   rD   chatBot_settingrz   r:   r   r   r   r   r   r   r7   rM   )r$   r%   rN   rO   rP   chatBotschatbot_listingbotr'   r'   r(   r     s6   $

$zchatBot.getc              
   C   s  zdzt |}W n ty% } ztdt|itjdW  Y d }~W S d }~ww tjj|d	 }|s;tdditj
dW S |j}tjj||d|d|d|d|d	d
}td|jdtjdW S  ty } ztdt|dtjdW  Y d }~S d }~ww )Nr   r   r9   r;   r   r   r   r   r   )r   r   r   r   r   r   zChatbot setting created)r   
chatbot_idr   r   )r
   rB   r   r5   r   r3   r   r   r    rC   rD   r   r   r"   r   r:   r#   rM   )r$   r%   rN   rO   rP   r   chatbotr'   r'   r(   r)   .  s0   $$zchatBot.postNrv   r'   r'   r'   r(   r~     s    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   rH   r]   django.confr   django.template.loaderr   django.core.mailr   django.corer   admin_panel.functionsadmin_panel.viewsr   r   r/   r8   rT   rg   rm   rp   rw   r~   r'   r'   r'   r(   <module>   s6    $#9