o
    7/i%                     @   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   sF  t | }tjjjddjddd}t|}| j	d}| j	d}dd	g}| j	d
}||v r9|| j
d|< | j
	d|d	}|d krb|dkrb|}|dkrTd}n|dkrZd}|| j
d|< |d krv|dkrv| rv|| j
d|< |d kr|dkr|| j
d|< | j
	d|d	}| j	d}	t|	t r|	 dkrt|	nd}	|	dk rdn|	}	i }
| j	dd }t|dk rdn|}|r||
d< |d	krtjjjtdtdddddddddjd+d |i|
d!}ntjjjtdtdddddddddjd+d |i|
d"}t|| j
	d|d krd#n| j
	d|}||	}g }|D ]"}tj|}tjj|d$ d%d&|d'< t|d' |d(< || q0t| d)||	||||| j
	d|d krjdn| j
	d|| j
	d|d krd#n| j
	d|| j
	d|d krd	n| j
	d||d*
S ),NOPERATORrole__startswithroler   flatdispitem_jmlascdescsortingz
sorting_{} listcolzdisp_{}zpage_show_{}pageTterm   cari2x__icontainssuratfnomorperihalsifatjenispengirim_namapengirim_instansipenerima_namapenerima_instansi)banyak_berkascari2x_typez-createdcreated   pkFpk_surat
is_deleted	thumbnailr1   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
   )requestr>   r?   r   r;   allowed_sortingsorting_reqr    rA   r<   kweri_filterr=   kwerir@   resultirC   rC   :/var/www/html/mfile_papteng_new/webapp/views/surat/main.py	page_list   s   "4
,,,rf   c                 C   sL   t | }tjjj||d}tjjj|dd}|j}t	| d||||dS )Nr3   r6   Fr7   zsurat/item.html)r>   suratr(   status_surat)
rD   rE   rU   rV   rH   rL   r[   rX   ri   r
   )r^   r>   surat_pkrh   r(   ri   rC   rC   re   	page_itemx   s   rk   c                 C   s&   t jjj|d}d|_|  td S )Nr6   T)rU   r[   rH   rL   r9   saver   )r^   r6   
surat_filerC   rC   re   page_deletef   s   ro   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r3ttjjj|d	}|D ]}dd
lm} ||j q=tjjj|d	  |j}	|j}
t| dd|d|	 d|
 d |  t| d | jdd}|rd|v rt|S td| dS )uB   
    Hapus surat (hard delete) — lampiran dihapus permanen.
    rg   r   r   r   r   r   r6   F)r8   r   deleterh   zHapus surat z ()zBerhasil hapus data.HTTP_REFERERNz/list
surat_list)r>   )rD   rE   rU   rV   rH   rL   rF   rG   rI   rJ   r"   rM   
user_inputr   r[   rX   r!   r   destroy_one_permanentr6   	Disposisirp   r)   r3   r   r   warningMETAr   r   lower)r^   r3   r6   r>   rh   r?   lampiran_listlampiranr   r)   tiperefererrC   rC   re   page_delete   s(   "r~   c                 C   s   t jjj|d}tjjjddjddd}| jd |vr&|j	| jd kr&t
t||| jd  t| dd	|d
|  t| d| d td|j |dS )Nrl   r   r   r   Tr   r6   rollbackrh   zRollback surat ke versi z!Berhasil rollback surat ke versi .
surat_itemr>   rj   )rU   rV   rH   rL   rF   rG   rI   rJ   rM   rt   r   suratf_uploadrollback_suratr   r   infor   r3   ry   )r^   rj   
version_idrh   r?   rC   rC   re   page_rollback   s   r   c                    s   t jjj|d}t "}|d|g dd |jD   fdd| D }W d    n1 s1w   Y  |D ]}t j	jj
|d d|d< q8|j}t| d	|||d
S )Nrl   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   rC   ).0r#   rC   rC   re   
<listcomp>   s    z page_history.<locals>.<listcomp>c                    s   g | ]	}t t |qS rC   )dictzip)r   rowcolumnsrC   re   r      s    r6   )
pk_versionattachmentszsurat/history.html)rh   versionsr>   )rU   rV   rH   rL   r   cursorexecutedescriptionfetchallSuratVersionAttachmentrX   r3   r
   )r^   rj   rh   r   r   vr>   rC   r   re   page_history   s    
r   c                 C   s   |  }t| jp	d }| jdkrY| rY|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)commitr6   r(   createrh   zBuat surat zSurat berhasil dibuat.r   r   surat/form.html)formr>   berkas)rE   	SuratFormr   methodis_validrm   r3   rM   rt   r   deployr6   FILESgetlistsave_surat_versionr   r)   r   successr   ry   r
   )r^   r>   r   rh   rC   rC   re   page_create   s"   r   c                 C   s  |  }tjjj||d}t| jpd |d}| jdkrt| rt| 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 )Nrg   )instancer   pending_delete_idsr!   c                 S   s   g | ]
}|  rt|qS rC   )rQ   rR   )r   xrC   rC   re   r     s    zpage_update.<locals>.<listcomp>,)pk__inT)r9   r6   r(   editrh   zEdit surat zSurat berhasil diperbarui.r   r   Fr7   r   )r   r>   rj   r   )rE   rU   rV   rH   rL   r   r   r   r   splitr[   rX   updater   r   rM   rm   r   r6   r   r   r   r)   r   r   r   ry   r
   )r^   r>   rj   rh   r   pending_idsidsr   rC   rC   re   page_update   s*   r   N),django.db.modelsr   django.urlsr   django.httpr   r   django.core.paginatorr   django.core.exceptionsr   django.contribr   django.contrib.postgres.searchr	   django.shortcutsr
   r   webapp.authr   webapp.commonr   r   webapp.modelsr   rU   r   rF   r!   r   r   	django.dbr   r   r   r   rf   rk   ro   r~   r   r   r   r   rC   rC   rC   re   <module>   s.   e'