a
    ؁h$                     @   s  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mZ d dlmZmZ d d	lmZ d d
lmZ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!m"Z# dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+d S )!    )Count)reverse)HttpResponseHttpResponseRedirect)	Paginator)PermissionDenied)messages)SearchVector)renderredirect)urlpath_validate)dumplog_activity)koleksimaster   upload)
connection)ViewFormc                 C   s  t | }tjjjddjddd}t|}| j	d}| j	d}| j	dd	}|d kr|d
kr|}|dkrvd}n|dkrd}|| j
d|< |d kr|d
kr| r|| j
d|< |d kr|d
kr|}|| j
d|< | j	d}t|t r| dkrt|nd}|dk rdn|}i }	| j	dd
 }
t|
dk rJd
n|
}
|
r\|
|	d< |d	krtjjjtdtdddddddddjf d|i|	d }n>tjjjtdtdddddddddjf d|i|	d!}t|| j
	d|d krd"n| j
	d|}||}g }|D ]B}tj|}tjj|d# d$|d%< t|d% |d&< || q*t| d'|||
|||| j
	d|d krdn| j
	d|| j
	d|d krd"n| j
	d|| j
	d|d krd	n| j
	d||d(
S ))NOPERATORZrole__startswithroler   flatdispZitem_jmlsortingdesc listcolzdisp_{}zpage_show_{}z
sorting_{}pageTterm   Zcari2x__icontainssuratfnomorperihalsifatjenispengirim_namapengirim_instansipenerima_namapenerima_instansi)banyak_berkasZcari2x_typez-createdcreated   pkpk_surat	thumbnailr-   zsurat/list.html)
	page_show	page_curr	page_term
surat_typeallowed_rolespagingdisplayshowr   r   ) strupperm_masterRolesobjectsexcludevalues_listr   GETgetsessionformat	isnumeric
isinstanceisdigitintstriplen	m_koleksiSuratannotater   r	   filterorder_byr   r!   _sanitize_resultSuratf
_read_manyappendr
   )requestr8   r9   r   r5   r   r;   Zsorteddr6   Zkweri_filterr7   Zkwerir:   resulti rZ   MD:\WORK\M-FILE\MFILE_PAPTENG_NEW\mfile_papteng_new\webapp\views\surat\main.py	page_list   s    &


4
,,,r\   c                 C   sL   t | }tjjj||d}tjjj|dd}|j}t	| d||||dS )Nr.   r1   Fr3   
is_deletedzsurat/item.html)r8   suratr$   status_surat)
r=   r>   rN   rO   rA   rE   rT   rQ   ra   r
   )rW   r8   surat_pkr`   r$   ra   rZ   rZ   r[   	page_itemr   s    rc   c                 C   s&   t jjj|d}d|_|  td S )Nr1   T)rN   rT   rA   rE   r_   saver   )rW   r1   Z
surat_filerZ   rZ   r[   page_deletef   s    rf   c              
   C   s   t | }tjjj||d}tjjjddj	ddd}t
|}| jd |v p\|j| jd kdkrfttjjj|d	}|D ]}dd
lm} ||j qztjjj|d	  |j}	|j}
t| dd|d|	 d|
 d |  t| d | jdd}|rd|v rt|S td| dS )uB   
    Hapus surat (hard delete) — lampiran dihapus permanen.
    r]   r   r   r   r   r   r1   Fr2   r   deleter`   zHapus surat z ()zBerhasil hapus data.HTTP_REFERERNz/list
surat_list)r8   )r=   r>   rN   rO   rA   rE   r?   r@   rB   rC   r   rF   
user_inputr   rT   rQ   r   r   Zdestroy_one_permanentr1   	Disposisirg   r%   r.   r   r   warningMETAr   r   lower)rW   r.   r1   r8   r`   r9   Zlampiran_listZlampiranr   r%   ZtiperefererrZ   rZ   r[   page_delete   s(    "rq   c                 C   s   t jjj|d}tjjjddjddd}| jd |vrL|j	| jd krLt
t||| jd  t| dd	|d
|  t| d| d td|j |dS )Nrd   r   r   r   Tr   r1   rollbackr`   zRollback surat ke versi z!Berhasil rollback surat ke versi .
surat_itemr8   rb   )rN   rO   rA   rE   r?   r@   rB   rC   rF   rk   r   suratf_uploadZrollback_suratr   r   infor   r.   ro   )rW   rb   Z
version_idr`   r9   rZ   rZ   r[   page_rollback   s    rx   c                    s   t jjj|d}t D}|d|g dd |jD   fdd| D }W d    n1 sb0    Y  |D ]}t j	jj
|d d|d< qp|j}t| d	|||d
S )Nrd   z
            SELECT sv.*, u.usr AS user_nama
            FROM surat_versions sv
            LEFT JOIN users u ON u.pk = sv.user_input
            WHERE sv.pk_surat = %s
            ORDER BY sv.created DESC
        c                 S   s   g | ]}|d  qS )r   rZ   ).0r    rZ   rZ   r[   
<listcomp>       z page_history.<locals>.<listcomp>c                    s   g | ]}t t |qS rZ   )dictzip)ry   rowcolumnsrZ   r[   rz      r{   r1   )
pk_versionattachmentszsurat/history.html)r`   versionsr8   )rN   rO   rA   rE   r   cursorexecutedescriptionfetchallSuratVersionAttachmentrQ   r.   r
   )rW   rb   r`   r   r   vr8   rZ   r   r[   page_history   s    
4r   c                 C   s   |  }t| jpd }| jdkr| r|jdd}||_| jd |_|  t	
| |j| jd t	|| jd  t| dd|jd|j  t| d	 td
| |jdS t| d||g dS )NPOSTF)commitr1   r$   creater`   zBuat surat zSurat berhasil dibuat.rt   ru   surat/form.html)formr8   berkas)r>   	SuratFormr   methodis_validre   r.   rF   rk   r   deployr1   FILESgetlistsave_surat_versionr   r%   r   successr   ro   r
   )rW   r8   r   r`   rZ   rZ   r[   page_create   s"    r   c                 C   s  |  }tjjj||d}t| jp$d |d}| jdkr| r| jdd}|r|dd |	dD }tj
jj|d	jd
d t|| jd  | }t| |j| jd t| dd|jd|j  t| d td| |jdS tj
jj|jdd}t| d||||dS )Nr]   )instancer   Zpending_delete_idsr   c                 S   s   g | ]}|  rt|qS rZ   )rJ   rK   )ry   xrZ   rZ   r[   rz      r{   zpage_update.<locals>.<listcomp>,)pk__inT)r_   r1   r$   editr`   zEdit surat zSurat berhasil diperbarui.rt   ru   Fr^   r   )r   r8   rb   r   )r>   rN   rO   rA   rE   r   r   r   r   splitrT   rQ   updater   r   rF   re   r   r1   r   r   r   r%   r   r   r   ro   r
   )rW   r8   rb   r`   r   Zpending_idsidsr   rZ   rZ   r[   page_update   s*    r   N),django.db.modelsr   django.urlsr   django.httpr   r   django.core.paginatorr   django.core.exceptionsr   Zdjango.contribr   Zdjango.contrib.postgres.searchr	   django.shortcutsr
   r   Zwebapp.authr   webapp.commonr   r   Zwebapp.modelsr   rN   r   r?   r   r   rv   	django.dbr   r   r   r   r\   rc   rf   rq   rx   r   r   r   rZ   rZ   rZ   r[   <module>   s,   _'