a
    ؁h?                     @   sT  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mZ d dlmZmZmZ d dlmZmZ d dlmZmZ d d	lmZmZmZ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#m$Z$m%Z% d dl&m'Z' ddl(m)Z* G dd deZ+G dd deZ,dd Z-G dd deZ.dd Z/dd Z0dd Z1d d! Z2e!d"d# Z3d
S )$    )
HTTPStatus)HttpResponseHttpResponseRedirectJsonResponse)reverse)messages)renderredirect)
CommonView
CommonFormCommonModelForm)koleksimaster)dumplog_activity)ContentVersionContentVersionAttachmentTag
ContentTagN)get_object_or_404)csrf_exempt)r   )extract_text_from_filepredict_categorysuggest_tags)View   )uploadc                   @   s   e Zd ZdddZdd ZdS )UploadFormCreateViewNc                 C   s`   |d u rt  }tjj }tjjddd}tjjdddd}dd |D }t|d||||dS )	Nr   	pk_parentdeepTr   r    flatc                 S   s   i | ]}|d  |d qS pk
attributes .0ir&   r&   OD:\WORK\M-FILE\MFILE_PAPTENG_NEW\mfile_papteng_new\webapp\views\fileman\form.py
<dictcomp>        z,UploadFormCreateView.get.<locals>.<dictcomp>fileman/form.html)form	skpd_listcategories_treecategories_flat)	UploadFormHandlem_masterSkpddgobjectsall	m_koleksi
Categories
_recursiver   )selfrequestr.   r/   r0   r1   r&   r&   r*   get   s    zUploadFormCreateView.getc                    s  t |j|j}|jd}g d  fdd|j D }| }td d d}| rNtj	j
d|d d|d< tjj
d|d	 d
|d	< tjj
d|d d
|d< |jd|d< |jd |d< tjjf i |}|jdd}dd |dD }	|	D ]&}
tjj|
d\}}tjj||d q|j}t||| t|dd|d< tjj|dd}dd |D plg }tjj||d|d|d |d j |d	 j|d j|d |d |d
}tj!j"d|dd}|D ]$}t#jj||j$|j%|j&|j'd  qt(|d!d"|d#|dd  t)*|d$ |rNt+d%d|id&|d'< d$|d(< t,|t-j.d)S |rjd*|d(< t,|t-j/d)S | D ]"\}}||j0v rr||j0| _1qr| j||d+S ),Nattachmentscsrfmiddlewaretokenpending_delete_idstagsc                    s   i | ]\}}| vr||qS r&   r&   r(   kvZEXCLUDE_KEYSr&   r*   r+   .   r,   z-UploadFormCreateView.post.<locals>.<dictcomp>r	   messager   tahunasisrH   pk_categoriesrJ   r$   
pk_skpd_dgr$   
user_inputstatus_kontenrA    c                 S   s    g | ]}|  r|   qS r&   striplowerr(   tr&   r&   r*   
<listcomp><   r,   z-UploadFormCreateView.post.<locals>.<listcomp>,name)contenttagr%   {}
content_idr[   c                 S   s   g | ]}|j jr|j jqS r&   r[   rY   rT   r&   r&   r*   rV   F   r,   judul	deskripsi
pk_contentsr`   ra   r%   rH   rK   rM   rO   rN   rA   FrJ   rc   
is_deleted
pk_versionrY   pathcontent_typesizer   contentszUpload dokumen zberhasil menyimpan data.content_item)kwargsr	   rG   statusz$gagal menyimpan, data belum lengkap.r.   )2r2   POSTFILESgetlistitemsis_ajaxdictis_validr3   Ta	_read_oner7   r8   r4   sessionr<   cleaned_dataContents_createsplitr   r5   get_or_creater   r$   fileman_uploaddeployfix_json_attributesfilterselect_relatedr   createrH   Attachments
_read_manyr   rY   rh   _typerj   r   r   infor   r   r   OKBAD_REQUESTfieldsinitial)r:   r;   r.   filesvaluesru   	json_datark   tags_rawrA   tag_namer[   _r$   Ztag_objs	tag_namesversionr=   arC   rD   r&   rE   r*   post)   sr    

zUploadFormCreateView.post)N__name__
__module____qualname__r<   r   r&   r&   r&   r*   r      s   
r   c                       s*   e Zd Z fddZG dd dZ  ZS )r2   c                    sF   t  j|i | d| jd _d| jd _d| jd _d| jd _d S )	NZKategorirK   z---Pilih SKPD---rM   zDeskripsi Singkatra   zJenis BerkasrO   )super__init__r   label)r:   argsrm   	__class__r&   r*   r   v   s
    zUploadFormHandle.__init__c                   @   s   e Zd ZejZg dZdS )zUploadFormHandle.Meta)rH   rK   rM   r%   r`   ra   rO   N)r   r   r   r7   r|   modelr   r&   r&   r&   r*   Meta   s   r   )r   r   r   r   r   __classcell__r&   r&   r   r*   r2   r   s   r2   c                 C   s    t | tr| |S t| |d S )N)
isinstancerv   r<   getattr)objfieldr&   r&   r*   get_val   s    r   c                   @   s   e Zd ZdddZdd ZdS )UploadFormUpdateViewNc                 C   s  |d u rt  }tjj|d}tjj|dd}ddd |D }dd tj	j
d|d	D }| D ]\}}	||jv rf|	|j| _qftjj }
tjjd
d
d}dd tjjd
d
ddD }|d |jdkr|jddvrt|ddtd|gdiS t|d|||
||||dS )Nr$   r]   r[   z, c                 S   s   g | ]}|j jqS r&   r_   rT   r&   r&   r*   rV      r,   z,UploadFormUpdateView.get.<locals>.<listcomp>c                 S   s   g | ]}t |d s|qS )re   )r   )r(   r   r&   r&   r*   rV      s   
r   rJ   rc   r   r   c                 S   s   i | ]}|d  |d qS r#   r&   r'   r&   r&   r*   r+      s   z,UploadFormUpdateView.get.<locals>.<dictcomp>Tr!   rN   r$   roleADMINKOORDINATORforbidden.htmlurlnyarl   r   r-   )r$   r.   r/   r=   r0   r1   Ztags_initial)r2   r7   r|   ry   r   r5   r   r   joinr   r   rt   r   r   r3   r4   r6   r8   r9   rz   r<   r   r   )r:   r;   r$   r.   rk   Ztags_qsZtags_strr=   rC   rD   r/   r0   r1   r&   r&   r*   r<      s6    
$zUploadFormUpdateView.getc                 C   s  t |j|j}dd |j D }|jd}| }td d d}| r|jdd}dd |	d	D }	|	
 }
tjj|d
}t|dd}tjj||d|d||d|d|d|d|jd|
d
}tjjd|d}|D ]>}t|ddstjj|t|dt|dt|dt|dd q|jdd}|	d	D ].}|  rLtjddidt|i qLtjjd|d d |d< tjjd|d d!|d< tjjd|d d!|d< |j d |d< tj|d|i t!jj"|d"#  |	D ](}t$jj%|d#\}}t!jj%||d$ q|r8t&'||| t(|d%d&|d'|dd  t)*|d( |rt+d)|gd*|d+< d,|d-< t,|t-j.d.S |rd/|d-< t,|t-j/d.S | j|||d0S )1Nc                 S   s   i | ]\}}|d vr||qS )r>   r&   rB   r&   r&   r*   r+      r,   z-UploadFormUpdateView.post.<locals>.<dictcomp>r=   rF   rA   rP   c                 S   s    g | ]}|  r|   qS r&   rQ   rT   r&   r&   r*   rV      r,   z-UploadFormUpdateView.post.<locals>.<listcomp>rW   r   r%   r\   r`   ra   rH   rK   rM   rO   r$   rb   r   r   re   FrY   rh   r   rj   rf   r@   TrI   rL   r]   rX   r^   r[   editrk   zEdit dokumen zBerhasil memperbarui data.rl   r   r	   zBerhasil menyimpan data.rG   rn   zGagal menyimpan data.rp   )0r2   rq   rr   rt   rs   ru   rv   rw   r<   r~   copyr7   r|   ry   r   r   r5   r   rz   r   r   r   r   r   rR   isdigit_updateintr3   rx   r8   r4   r{   r   r   deleter   r   r   r   r   r   r   r   r   r   r   r   )r:   r;   r$   r.   r   r=   ru   r   r   rA   r   oldZold_attr_fixedr   Z	old_filesr   pending_idsZatt_idr   r[   r   r&   r&   r*   r      st    

zUploadFormUpdateView.post)Nr   r&   r&   r&   r*   r      s   
$r   c                 C   s:  t t|d}|j}tjjj|d}tjj|d}|dd}t|}t	jj
|dd}dd |D }	tjj||d	|d
||d|d|d|d| jd|	d
}
tjjd|dd}|D ]2}tjj|
t|dt|dt|dt|dd qtjddid|i tjj
|jd}|D ]&}tjj||j|j|j|jdd q&|j}t|trjt|}tj|j|j|t j!jj|j"dtj#jj|j$dt j%jj|j&d|j'dd|ji t	jj
|d(  |j)pg }	|	D ](}t*jj+|d \}}t	jj+||d! qt,| d"d#|d$|j  t-.| d% t/d&|dS )'N)_pkr   r%   r\   r]   r[   c                 S   s   g | ]}|j jr|j jqS r&   r_   rT   r&   r&   r*   rV     r,   z$rollback_version.<locals>.<listcomp>r`   ra   rH   rK   rM   rO   r$   rb   r   Frd   rY   rh   r   rj   rf   re   Trc   )rg   )rc   rY   rh   r   rj   re   )rH   )r`   ra   r%   rH   rK   rM   rO   rX   r   rollbackrk   zRollback ke versi ID z"Rollback metadata & file berhasil.rl   )0r   r   rc   r7   r|   r5   r<   ry   r   r   r   r   r   rz   r   r   r   r   r   r   r}   rY   rh   ri   rj   r%   r   rv   jsondumpsr`   ra   r3   rx   rH   r8   rK   r4   rM   rO   r   rA   r   r   r   r   successr	   )r;   r$   r   rc   Zcontent_objcurrentZraw_attrZattributes_fixedZtag_qsr   Zbackup_versionZactive_filesr   Zrestored_filesfattrr   r[   r   r&   r&   r*   rollback_version   s|    

	

r   c                 C   s   t jddid|i td S )Nre   Tr$   )r7   r   r   r   )r;   r$   r&   r&   r*   removeC  s    r   c              
   C   s,  zt jj|d}|d | jdkrP| jddvrPt| ddtd|gd	iW S t jjd
|d}|D ]}t	j
t|dd qdt jj|d t| dd|d|d  d t| d tdW S  t jjy   t| d td Y S  ty& } z*td| t| d tdW  Y d }~S d }~0 0 d S )Nr   rN   r$   r   r   r   r   rl   r   r   r   r   rk   zHapus dokumen r`   )actionri   	object_pkdescriptionzBerhasil menghapus data.content_listz(Data yang ingin dihapus tidak ditemukan.zError:z&Terjadi kesalahan saat menghapus data.)r7   r|   ry   rz   r<   r   r   r   r   r   destroy_one_permanentr   _deleter   r   warningr	   DoesNotExisterror	Exceptionprint)r;   r$   rk   Zattachment_listr   er&   r&   r*   r   I  s0    $

r   c                 C   s   | sdS t | trt| S zt|  | W S  tjyz   | dd}zt| |W  Y S  tjyt   Y Y dS 0 Y n0 d S )Nr\   '")r   rv   r   r   loadsJSONDecodeErrorreplace)Zattr_rawZ
attr_fixedr&   r&   r*   r   i  s    




r   c              
   C   s   | j d}|s tddiddS z(t|}t|}t|}t||dW S  ty } z tdt|iddW  Y d }~S d }~0 0 d S )Nfiler   z(Tidak ada File atau  category yang cocoki  rn   )pred_categorysuggested_tagsi  )rr   r<   r   r   r   r   r   str)r;   r   textr   r   r   r&   r&   r*   predict_category_tagsy  s    
r   )4httpr   django.httpr   r   r   django.urlsr   Zdjango.contribr   django.shortcutsr   r	   webapp.views.baser
   r   r   Zwebapp.modelsr   r7   r   r3   webapp.commonr   r   Zwebapp.models.koleksir   r   r   r   r   r   django.views.decorators.csrfr   Zwebapp.ml_utilsr   r   r   Zdjango.viewsr   rP   r   r   r   r2   r   r   r   r   r   r   r   r&   r&   r&   r*   <module>   s2   ZnH 