o
    ir                     @   s   d dl Z d dlmZ d dlmZmZ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mZ e jejddZG dd dejZG dd dejZdS )    N)settings)viewsetsfiltersstatus)IsAuthenticated)Response)master   )AuditLogSerializerSettingUpdateSerializer)CustomPageNumberPagination)extend_schemaOpenApiTypesassetsuploadc                   @   s   e Zd ZegZg dZdd Zedddddd	idd	idd	idd	idd	idd	idd	id	d
dd	d
dd	didej	iddddZ
dS )PublicSettingViewSet)APPNAMEAPPNAME_SHORT
PEMDA_ADDRPEMDA_COPYRIGHT_BYPEMDA_COPYRIGHT_YEAR
PEMDA_MAIL
PEMDA_NAMEc                 C   sF   t jjj| jddd}dd |D }d|d< d|d	< t|tjd
S )N)k__inkvc                 S   s   i | ]	}|d  |d qS )r   r    ).0itemr   r   :/var/www/html/mfile_papteng_new/webapp/api/seting/views.py
<dictcomp>   s    z-PublicSettingViewSet.list.<locals>.<dictcomp>logo.pnglogosite-bg.pngsite_bgr   )	m_masterSettingsobjectsfilterallowed_keysvaluesr   r   HTTP_200_OK)selfrequestquerysetresultr   r   r   list   s
   zPublicSettingViewSet.listz*Update settings + upload logo / backgroundzNUpdate konfigurasi aplikasi, termasuk upload file seperti logo dan background.zmultipart/form-dataobjecttypestringbinary)r3   format)	r   r   r   r   r   r   r   r"   r$   )r3   
properties   )summarydescriptionr.   	responsesNc              	   C   s4  t |jd}|jdd |j}i }| jD ]2}||v rFz tjjj|d d}t	|| 
 |_|jdgd |j||< W q tjjyE   Y qw q|j}ddd	}	tjtdd
 |	 D ]8\}
}|
|v r||
 }tjt|}t|d}| D ]}|| qwW d    n1 sw   Y  d||
< qZt|tjdS )N)dataT)raise_exception)r   _typer   )update_fieldsr!   r#   )r"   r$   )exist_okzwb+uploadedr%   )r   r<   is_validvalidated_datar*   r&   r'   r(   getstrstripr   saveDoesNotExistFILESosmakedirsPATH_DIRitemspathjoinopenchunkswriter   r   r,   )r-   r.   pk
serializerr<   updatedkeysfilesfile_map
input_name	file_namefile_obj	save_pathbufferchunkr   r   r   update'   s@   

zPublicSettingViewSet.update)N)__name__
__module____qualname__r   permission_classesr*   r1   r   r   OBJECTr`   r   r   r   r   r      s0    

r   c                   @   sD   e Zd ZeZegZeZe	j
e	jgZg dZddgZdgZdd ZdS )AuditLogViewSet)actionr:   content_type	timestamprg   z
-timestampc                 C   s   t jjd }| jjdd }|dkr|j	ddd}n!|dkr+|j	d	dd}n|d
kr6|j	dd}n
|dkr@|j	dd}| jjd}|rO|j	|d}|S )Nusercategory zsurat masukmasuksurat)description__icontainsrh   zsurat keluarkeluardokumencontents)rh   	disposisirg   )action__iexact)
r&   AuditLogr(   select_relatedallr.   query_paramsrD   lowerr)   )r-   qsrk   rg   r   r   r   get_queryseto   s   zAuditLogViewSet.get_querysetN)ra   rb   rc   r
   serializer_classr   rd   r   pagination_classr   SearchFilterOrderingFilterfilter_backendssearch_fieldsordering_fieldsorderingr{   r   r   r   r   rf   f   s    rf   )rJ   django.confr   dj_settingsrest_frameworkr   r   r   rest_framework.permissionsr   rest_framework.responser   webapp.modelsr   r&   serializersr
   r   
paginationr   drf_spectacular.utilsr   r   rN   rO   BASE_DIRrL   ViewSetr   ReadOnlyModelViewSetrf   r   r   r   r   <module>   s   V