U
    h	                     @   sb   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 G dd dejZd	S )
    )viewsetsstatus)Response)	Paginator)get_object_or_404)	Disposisi)IsAuthenticatedc                   @   sD   e Zd ZdZegZdd Zdd ZdddZdd	d
Z	dddZ
dS )DisposisiViewSetz0List, Create, Retrieve, Update, Delete Disposisic                 C   s   t j d}t|jdd}t|jdd}t||}||}g }|D ]4}|	|j
|j|j|j|j|j|j|j|jd	 qP| r| nd}	| r| nd}
t|j|j|	r|d |	 nd|
r|d |
 nd||d	S )
zGET /api/disposisi/z-createdpage   	page_size   	idpk_surattanggalsifatkepadacatatancreatedupdated
user_inputNz?page=)count	num_pagesnextpreviousr   results)r   objectsallorder_byintGETgetr   get_pageappendpkr   r   r   r   r   r   r   r   has_nextnext_page_numberhas_previousprevious_page_numberr   r   r   build_absolute_uri)selfrequestqueryr
   r   	paginatorpagingresultitem	next_page	prev_page r4   :D:\Project\agus\mfile_papteng_new\webapp\api\disp\views.pylist   s8    


zDisposisiViewSet.listc              
   C   sj   z(t jjf |j}t|jddtjdW S  tk
rd } ztdt	|itj
d W Y S d}~X Y nX dS )zPOST /api/disposisi/r   r   messager   errorN)r   r   createdatar   r%   r   HTTP_201_CREATED	ExceptionstrHTTP_400_BAD_REQUEST)r+   r,   objer4   r4   r5   r;   2   s
    zDisposisiViewSet.createNc              
   C   s>   t t|d}|j|j|j|j|j|j|j|j	|j
d	}t|S )zGET /api/disposisi/{id}/r%   r   )r   r   r%   r   r   r   r   r   r   r   r   r   )r+   r,   r%   rA   r<   r4   r4   r5   retrieve:   s    zDisposisiViewSet.retrievec              
   C   s   zFt t|d}|j D ]\}}t||| q|  t|jddW S  tk
r } ztdt	|it
jd W Y S d}~X Y nX dS )zPUT /api/disposisi/{id}/rC   r   r7   r:   r9   N)r   r   r<   itemssetattrsaver   r%   r>   r?   r   r@   )r+   r,   r%   rA   fieldvaluerB   r4   r4   r5   updateJ   s    zDisposisiViewSet.updatec              
   C   sj   z(t t|d}|  tdditjdW S  tk
rd } ztdt|itjd W Y S d}~X Y nX dS )zDELETE /api/disposisi/{id}/rC   r8   deletedr9   r:   N)	r   r   deleter   r   HTTP_204_NO_CONTENTr>   r?   r@   )r+   r,   r%   rA   rB   r4   r4   r5   destroyU   s    zDisposisiViewSet.destroy)N)N)N)__name__
__module____qualname____doc__r   permission_classesr6   r;   rD   rJ   rN   r4   r4   r4   r5   r	      s   #

r	   N)rest_frameworkr   r   rest_framework.responser   django.core.paginatorr   django.shortcutsr   Zwebapp.models.koleksir   Zrest_framework.permissionsr   ViewSetr	   r4   r4   r4   r5   <module>   s   