o
    [h<                     @   sp  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	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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 Z d dl!Z!d dl"Z"d dl#Z#d dl$Z$d dl%Z%d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; dd Z<G dd dej=Z>G dd dej=Z?G dd dej=Z@G dd dej=ZAG dd  d eZBG d!d" d"eZCG d#d$ d$eZDG d%d& d&eZEG d'd( d(eZFG d)d* d*eZGG d+d, d,eZHG d-d. d.eZIG d/d0 d0eZJG d1d2 d2eZKG d3d4 d4eZLG d5d6 d6eZMdS )7    )viewsetspermissions)APIView)Response)AllowAny)Token)IsAuthenticated)ObtainAuthToken)User)swagger_auto_schemastatus)openapi)Q)get_object_or_404)MultiPartParser
FormParser)default_storage)ContentFileN)Module
PermissionRolePermissionRoleAdminMaster)IsActiveAdmin)ModuleSerializerPermissionSerializerRoleSerializerAdminLoginSerializerAdminUpdateSerializerAdminStatusUpdateSerializerPermissionRoleSerializerAdminSerializerMasterSerializer#AdminConfirmResetPasswordSerializer#AdminRequestPasswordResetSerializerMasterStatusUpdateSerializerc                 C   s6   t  }|D ]}|t di | d|iO }q| |S )N__icontains )r   filter)querysetsearch_termfieldsqfieldr)   r)   V/var/www/vedio/testing/chatpythonscript.ninositsolution.com/master/views/admin_auth.pyapply_search$   s   
r1   c                   @   $   e Zd Zej ZeZe	j
egZdS )ModuleViewSetN)__name__
__module____qualname__r   objectsallr+   r   serializer_classr   r   r   permission_classesr)   r)   r)   r0   r3   +       
r3   c                   @   r2   )PermissionViewSetN)r4   r5   r6   r   r7   r8   r+   r   r9   r   r   r   r:   r)   r)   r)   r0   r<   1   r;   r<   c                   @   r2   )RoleViewSetN)r4   r5   r6   r   r7   r8   r+   r   r9   r   r   r   r:   r)   r)   r)   r0   r=   7   r;   r=   c                   @   r2   )PermissionRoleViewSetN)r4   r5   r6   r   r7   r8   r+   r"   r9   r   r   r   r:   r)   r)   r)   r0   r>   =   r;   r>   c                   @   J   e Zd ZejegZededdiddd Z	eedeidd	d
 Z
dS )AdminListCreateAPIView   Tmany	responsesc                 C   @   t j }|jd}|rt||ddg}t|dd}t|jS NsearchnameemailTrB   )	r   r7   r8   query_paramsgetr1   r#   r   data)selfrequestadminsrH   
serializerr)   r)   r0   rL   F      

zAdminListCreateAPIView.get   request_bodyrE   c                 C   sL   t |jd}| r|  tdd|jdtjdS tdd|jdtjdS )	NrM   successzAdmin added successfullyr   messagerM   r   errorInvalid data providedr   rY   errors)	r#   rM   is_validsaver   r   HTTP_201_CREATEDr]   HTTP_400_BAD_REQUESTrN   rO   rQ   r)   r)   r0   postO   s"   zAdminListCreateAPIView.postN)r4   r5   r6   r   r   r   r:   r   r#   rL   rc   r)   r)   r)   r0   r@   C       

r@   c                   @   sH   e Zd ZejegZeeddddd Z	eeeddddd Z
d	S )
AdminDetailAPIViewAdmin not foundrA     rD   c                 C      t t|d}t|}t|jS Npk)r   r   r    r   rM   rN   rO   rl   adminrQ   r)   r)   r0   rL   b      
zAdminDetailAPIView.getrT   c                 C   Z   t t|d}t||jd}| r!|  tdd|jdtjdS tdd|j	d	tj
dS )
Nrk   rV   rW   zAdmin updated successfullyrX   r   rZ   r[   r\   )r   r   r    rM   r^   r_   r   r   HTTP_200_OKr]   ra   rm   r)   r)   r0   rc   h   s$   zAdminDetailAPIView.postN)r4   r5   r6   r   r   r   r:   r   r    rL   rc   r)   r)   r)   r0   re   _   s    

re   c                   @   s4   e Zd ZejegZeeeddddddd Z	dS )	AdminStatusUpdateAPIViewInvalid datarf   rA   i  rh   z$Update the status of an admin by ID.rU   rE   operation_descriptionc                 C   rp   )
Nrk   rV   rW   z!Admin status updated successfullyrX   r   rZ   Invalid status providedr\   )r   r   r!   rM   r^   r_   r   r   rq   r]   ra   rm   r)   r)   r0   rc      $   
zAdminStatusUpdateAPIView.postN)
r4   r5   r6   r   r   r   r:   r   r!   rc   r)   r)   r)   r0   rr      s    
	rr   c                   @   .   e Zd ZejegZedddddd ZdS )AdminDeleteAPIViewAdmin deleted successfullyrf   rg   rD   c                 C   (   t t|d}|  tdddtjdS )Nrk   rW   r{   r   rY   r   )r   r   deleter   r   rq   )rN   rO   rl   rn   r)   r)   r0   rc      s   zAdminDeleteAPIView.postN	r4   r5   r6   r   r   r   r:   r   rc   r)   r)   r)   r0   rz      s    
rz   c                   @   r?   )MasterListCreateAPIViewrA   TrB   rD   c                 C   rF   rG   )	r   r7   r8   rK   rL   r1   r$   r   rM   )rN   rO   mastersrH   rQ   r)   r)   r0   rL      rR   zMasterListCreateAPIView.getrS   rT   c              
   C   s>  |j d}d }|rozEt| }|d t|j\}}|s#d}t	j
dddddd	}d
t  d|jdd  }|j|d|d|dd d| }W n tyn }	 ztddt|	 iddW  Y d }	~	S d }	~	ww |j }
|rz||
d< t|
d}| r|  tdd|jdtjdS tdd|jdtjdS )Nimager   application/octet-streams3sgp1#https://sgp1.digitaloceanspaces.comNMQAUQUGQAQ4ZE4QNKFN+IbTaeOcuA8Xb9WFclN1vow53a3D6yjyxbwn1Yzvw5ncregion_nameendpoint_urlaws_access_key_idaws_secret_access_keychatapp/masters/.foodieninospublic-readACLContentType	ExtraArgs4https://foodieninos.sgp1.cdn.digitaloceanspaces.com/rZ   Image upload failed:   r   value1rV   rW   zMaster created successfullyrX   r[   r\   )FILESrL   ioBytesIOreadseek	mimetypes
guess_typerI   boto3clientuuiduuid4splitupload_fileobj	Exceptionr   strrM   copyr$   r^   r_   r   r`   r]   ra   )rN   rO   r   value1_path
image_copycontent_type_r   filenameerM   rQ   r)   r)   r0   rc      sd   
 
&

zMasterListCreateAPIView.postN)r4   r5   r6   r   r   r   r:   r   r$   rL   rc   r)   r)   r)   r0   r      rd   r   c                   @   s<   e Zd ZejegZegZe	e
ddddd Zdd ZdS )	MasterDetailAPIViewMaster not foundrg   rD   c                 C   ri   rj   )r   r   r$   r   rM   rN   rO   rl   masterrQ   r)   r)   r0   rL      ro   zMasterDetailAPIView.getc              
   C   sN  t t|d}|jd}d }|ruzEt| }|d t	|j
\}}|s)d}tjddddd	d
}	dt  d|j
dd  }
|	j|d|
d|dd d|
 }W n tyt } ztddt| iddW  Y d }~S d }~ww |j }|r||d< t||dd}| r|  tdd|jdtjdS tdd|jdtjdS )Nrk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   T)rM   partialrW   zMaster updated successfullyrX   r[   r\   )r   r   r   rL   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   rM   r   r$   r^   r_   r   rq   r]   ra   )rN   rO   rl   r   r   r   r   r   r   r   r   r   rM   rQ   r)   r)   r0   rc     sf   
 
&
zMasterDetailAPIView.postN)r4   r5   r6   r   r   r   r:   r   parser_classesr   r$   rL   rc   r)   r)   r)   r0   r      s    

r   c                   @   s2   e Zd ZeegZeeeddddddd ZdS )	MasterStatusUpdateAPIViewrs   r   rt   z$Update the status of a master by ID.ru   c                 C   rp   )
Nrk   rV   rW   z"Master status updated successfullyrX   r   rZ   rw   r\   )r   r   r'   rM   r^   r_   r   r   rq   r]   ra   r   r)   r)   r0   rc   =  rx   zMasterStatusUpdateAPIView.postN)	r4   r5   r6   r   r   r:   r   r'   rc   r)   r)   r)   r0   r   :  s    	r   c                   @   ry   )MasterDeleteAPIViewMaster deleted successfullyr   rg   rD   c                 C   r|   )Nrk   rW   r   r}   r   )r   r   r~   r   r   rq   )rN   rO   rl   r   r)   r)   r0   rc   Z  s   zMasterDeleteAPIView.postNr   r)   r)   r)   r0   r   W  s    
r   c                   @   s   e Zd ZegZdd ZdS )AdminLoginViewc                 C   s   t |jd}| stdddtjdS |jd }|js&tdddtjdS z
tjj	|j
d}W n tjyD   tdd	dtjd Y S w tjj|d
\}}t|j}td|j|dS )NrV   rZ   zEnter valid email or passwordr}   r   rn   z!Your account has been deactivated)usernamezAssociated user not found.)userrW   )r   tokenrn   )r   rM   r^   r   r   ra   validated_datar
   r7   rL   rI   DoesNotExistr   get_or_creater#   key)rN   rO   rQ   rn   r   r   created
admin_datar)   r)   r0   rc   g  sB   


zAdminLoginView.postN)r4   r5   r6   r   r:   rc   r)   r)   r)   r0   r   d  s    r   c                   @   s   e Zd ZeegZdd ZdS )AdminLogoutViewc                 C   s   |j   tdddS )NrW   zLogged out successfullyr}   )authr~   r   )rN   rO   r)   r)   r0   rc     s
   
zAdminLogoutView.postN)r4   r5   r6   r   r   r:   rc   r)   r)   r)   r0   r     s    r   c                   @   ,   e Zd ZegZeedddiddd ZdS )AdminRequestPasswordResetViewzRequest password reset emailrA   zReset link sentrU   rv   rE   c                 C   :   t |jd}| r|  tdddS t|jtjdS )NrV   rW   z'Password reset link sent to your email.r}   r   )r&   rM   r^   r_   r   r]   r   ra   rb   r)   r)   r0   rc     
   z"AdminRequestPasswordResetView.postN)r4   r5   r6   r   r:   r   r&   rc   r)   r)   r)   r0   r         r   c                   @   r   )AdminConfirmResetPasswordViewz"Reset password using UID and tokenrA   Password reset successfulr   c                 C   r   )NrV   rW   r   r}   r   )r%   rM   r^   r_   r   r]   r   ra   rb   r)   r)   r0   rc     r   z"AdminConfirmResetPasswordView.postN)r4   r5   r6   r   r:   r   r%   rc   r)   r)   r)   r0   r     r   r   )Nrest_frameworkr   r   rest_framework.viewsr   rest_framework.responser   rest_framework.permissionsr   rest_framework.authtoken.modelsr   r   rest_framework.authtoken.viewsr	   django.contrib.auth.modelsr
   drf_yasg.utilsr   r   drf_yasgr   django.db.modelsr   django.shortcutsr   rest_framework.parsersr   r   django.core.files.storager   django.core.files.baser   ostimer   r   r   r   master.modelsr   r   r   r   r   r   master.authenticationr   master.serializersr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r1   ModelViewSetr3   r<   r=   r>   r@   re   rr   rz   r   r   r   r   r   r   r   r   r)   r)   r)   r0   <module>   sT     8!HC&
