o
    [h                     @   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
mZ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mZ 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 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)MasterBanner)MasterSerializerBannerSerializerBannerStatusSerializerBannerImageTypeUpdateSerializer)IsActiveAdminN)settings)MultiPartParser
FormParser)uuid4)IsAuthenticated)swagger_auto_schema)openapi)Qc                 C   s6   t  }|D ]}|t di | d|iO }q| |S )N__icontains )r   filter)querysetsearch_termfieldsqfieldr   r   S/var/www/vedio/testing/chatpythonscript.ninositsolution.com/master/views/masters.pyapply_search   s   
r   c                   @   s   e Zd ZeegZdd ZdS )MasterDetailViewc                 C   sH   t jj|d}|jd}|rt||dg}t|dd}t|jt	j
dS )N)typesearchnameTmanyr   r   objectsr   query_paramsgetr   r   r   datar   HTTP_200_OKselfrequesttype_idmaster_entriesr!   
serializerr   r   r   r(       s   zMasterDetailView.getN)__name__
__module____qualname__r   r   permission_classesr(   r   r   r   r   r      s    r   c                   @   s   e Zd Zdd ZdS )MastertoUserViewc                 C   sJ   t jj|dd}|jd}|rt||dg}t|dd}t|jt	j
dS )NT)r    r   r!   r"   r#   r   r%   r+   r   r   r   r(   +   s   zMastertoUserView.getN)r1   r2   r3   r(   r   r   r   r   r5   *   s    r5   c                   @   s>   e Zd ZegZegZeddeddiddd Z	dd	 Z
d
S )
BannerViewzGet all banners   Tr#   )operation_description	responsesc                 C   s2   t j d}t|dd}td|jdtjdS )Nz-created_atTr#   success)r   r)   r   )	r   r&   allorder_byr	   r   r)   r   r*   )r,   r-   bannersr0   r   r   r   r(   :   s   zBannerView.getc           	   
   C   s  |j d}|stdditjdS z,tjddddd	d
}dt  d|j	
dd  }|j|d|ddid d| }W n  ty] } ztddt| itjdW  Y d }~S d }~ww |jd|jdd|d}t|d}| r|  tdd|jdtjdS t|jtjdS )NimageerrorzImage file is required.r   s3sgp1#https://sgp1.digitaloceanspaces.comNMQAUQUGQAQ4ZE4QNKFN+IbTaeOcuA8Xb9WFclN1vow53a3D6yjyxbwn1Yzvw5ncregion_nameendpoint_urlaws_access_key_idaws_secret_access_keychatapp/banners/.foodieninosACLpublic-read	ExtraArgs4https://foodieninos.sgp1.cdn.digitaloceanspaces.com/Image upload failed: r    r   T)r    r   r>   )r)   r:   zBanner added successfullyr   messager)   )FILESr(   r   r   HTTP_400_BAD_REQUESTboto3clientuuidr   r"   splitupload_fileobj	ExceptionstrHTTP_500_INTERNAL_SERVER_ERRORr)   r	   is_validsaveHTTP_201_CREATEDerrors)	r,   r-   
image_filer@   filename	image_urlebanner_datar0   r   r   r   postF   sL    (

zBannerView.postN)r1   r2   r3   r   r4   r   parser_classesr   r	   r(   ri   r   r   r   r   r6   6   s    
r6   c                   @   "   e Zd ZeegZegZdd ZdS )BannerDetailViewc              
   C   s:  z	t jj|d}W n t jy   tdditjd Y S w |j }|j	d}|rzz0t
jdddd	d
d}dt  d|jdd  }|j|d|ddid d| }||d< W n tyy }	 ztddt|	 iddW  Y d }	~	S d }	~	ww t||dd}
|
 r|
  tdd|
jdtjdS t|
jtjdS )Npkr?   Banner not foundr   r>   r@   rA   rB   rC   rD   rE   rJ   rK   rL   rM   rN   rO   rP   rR   rS     Tr)   partialr:   zBanner updated successfullyrT   )r   r&   r(   DoesNotExistr   r   HTTP_404_NOT_FOUNDr)   dictrV   rX   rY   rZ   r   r"   r[   r\   r]   r^   r	   r`   ra   r*   rc   rW   )r,   r-   rn   bannerupdate_datard   r@   re   rf   rg   r0   r   r   r   ri   y   sP   
 
&zBannerDetailView.postN	r1   r2   r3   r   r   r4   r   rj   ri   r   r   r   r   rl   u       rl   c                   @   rk   )BannerImageTypeUpdateViewc              
   C   sP  z	t jj|d}W n t jy   tdditjd Y S w i }|jd}|rwz0tj	dddd	d
d}dt
  d|jdd  }|j|d|ddid d| }||d< W n tyv }	 ztddt|	 iddW  Y d }	~	S d }	~	ww |jd}
|
d ur|
|d< t||dd}| r|  tdd|jdtjdS t|jtjdS )Nrm   r?   ro   r   r>   r@   rA   rB   rC   rD   rE   rJ   rK   rL   rM   rN   rO   rP   rR   zFailed to upload image: rp   r    Trq   r:   z!Banner image updated successfullyrT   )r   r&   r(   rs   r   r   rt   rV   rX   rY   rZ   r   r"   r[   r\   r]   r^   r)   r   r`   ra   r*   rc   rW   )r,   r-   rn   rv   rw   rd   r@   re   rf   rg   banner_typer0   r   r   r   ri      sL    
&zBannerImageTypeUpdateView.postNrx   r   r   r   r   rz      ry   rz   )'rest_framework.viewsr   rest_framework.responser   rest_frameworkr   master.modelsr   r   master.serializersr   r	   r
   r   master.authenticationr   rX   	mimetypesdjango.confr   rest_framework.parsersr   r   rZ   r   rest_framework.permissionsr   drf_yasg.utilsr   drf_yasgr   django.db.modelsr   r   r   r5   r6   rl   rz   r   r   r   r   <module>   s,    ?1