a
    ؁h                     @   s   d dl Z d dlZd dlmZ d dlmZmZ d dlmZ	 dZ
e jeje
Ze jedd dd	 Zd
d Zdd Zdd Zdd Zdd ZdS )    N)settings)create_thumbnail
update_tgl)koleksizassets/upload/suratTexist_okc              	   C   s4  |D ](}t  d }tjjjtjjj|d|j|j|j	dd}|j
jd|j
jd|j
jd}| dt|j   d|j tj|jd  }tjt||}tjtjt|d	d
 t|d(}	| D ]}
|	|
 qW d   n1 s0    Y  tj||dd|_|  t|jt qdS )z<
    Simpan file baru (upload lampiran baru) ke Suratf.
    tgldetikpkF)pk_suratnamesize_type
is_deleted0402_   Tr   zxb+N\/)r   	m_koleksiSuratfobjectscreateSuratgetr   r   content_typecreatedyearmonthdayhashlibmd5encode	hexdigestr
   ospathsplitextjoinABSPATHmakedirsopenchunkswritereplacesaver   )requestr   filesfileZrandom_suratfinfixsuffix	full_pathbufferchunk r9   OD:\WORK\M-FILE\MFILE_PAPTENG_NEW\mfile_papteng_new\webapp\views\surat\upload.pydeploy   s&    

	"8*r;   c                 C   s   t jjj| djdd dS )z$
    Soft delete satu lampiran.
    r	   Tr   Nr   r   r   filterupdater	   r9   r9   r:   destroy_one-   s    r@   c                 C   s   t jjj| djdd dS )z:
    Soft delete semua lampiran untuk surat tertentu.
    r   Tr<   Nr=   rA   r9   r9   r:   destroy_many4   s    rB   c              
   C   s~   t jjj| d }|rzz*tjt|j}tj	|r@t
| W n. typ } ztd| W Y d}~n
d}~0 0 |  dS )z;
    Hard delete lampiran (hapus file fisik & DB row).
    r	   u   ❌ Error hapus file fisik:N)r   r   r   r>   firstr%   r&   r(   r)   existsremove	Exceptionprintdelete)r
   r3   r6   er9   r9   r:   destroy_one_permanent;   s     rJ   c                 C   s   t jjj| j| j| j| j| j| j| j	| j
| j| j| j| j| j| j|d}t jjj| jdd}|D ]$}t jjj||j|j|j|jd q`dS )z`
    Simpan metadata surat & lampiran aktif ke tabel SuratVersion & SuratVersionAttachment.
    )r   nomortanggaltanggal_masukpengirimpengirim_namapengirim_instansipenerimapenerima_namapenerima_instansisifatjenisperihalstatus_surat
user_inputF)r   r   )
pk_versionr   r&   r   r   N)r   SuratVersionr   r   r
   rK   rL   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   r   r>   SuratVersionAttachmentr   r&   r   r   )Z	surat_objuser_idversionattachmentsattr9   r9   r:   save_surat_versionK   s4    r`   c              	   C   s   t jjj| d}t jjj|d}t|| |j|_|j|_|j|_|j	|_	|j
|_
|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|  t jjj| djdd t jjj|jdD ]&}t jjj||j|j|j|jdd qdS )	zq
    Rollback surat ke versi tertentu.
    Backup versi aktif dulu ke history, lalu restore metadata & file.
    r	   rA   Tr<   )rY   F)r   r   r&   r   r   r   N)r   r   r   r   rZ   r`   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   r/   r   r>   r?   r[   r
   r   r   r&   r   r   )r   
version_idr\   suratr]   Zv_attr9   r9   r:   rollback_suratl   s6    
rc   )r%   r!   django.confr   webapp.commonr   r   webapp.modelsr   r   ZRELPATHr&   r(   BASE_DIRr)   r*   r;   r@   rB   rJ   r`   rc   r9   r9   r9   r:   <module>   s   !!