o
    L0i                     @   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_surat
update_tgl)koleksizassets/upload/suratTexist_okc                 C   s  |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 ]}
|	|
 qiW d   n1 s{w   Y  tj||dd|_|  tj|jd  }|dkrzt|jt W q t y } zt!d| W Y d}~qd}~ww 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\/z.pdfz? Gagal membuat thumbnail:)"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savelowerr   	Exceptionprint)requestr   filesfilerandom_suratfinfixsuffix	full_pathbufferchunkexte r?   </var/www/html/mfile_papteng_new/webapp/views/surat/upload.pydeploy   s<   
"	8	rA   c                 C      t jjj| djdd dS )z$
    Soft delete satu lampiran.
    r	   Tr   Nr   r   r   filterupdater	   r?   r?   r@   destroy_one9      rG   c                 C   rB   )z:
    Soft delete semua lampiran untuk surat tertentu.
    r   TrC   NrD   rI   r?   r?   r@   destroy_many@   rH   rJ   c              
   C   s   t jjj| d }|r?ztjt|j}tj	|r t
| W n ty8 } ztd| W Y d}~nd}~ww |  dS dS )z;
    Hard delete lampiran (hapus file fisik & DB row).
    r	   z? Error hapus file fisik:N)r   r   r   rE   firstr%   r&   r(   r)   existsremover1   r2   delete)r
   r7   r:   r>   r?   r?   r@   destroy_one_permanentG   s   
rO   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 q0d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
   rP   rQ   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r   rE   SuratVersionAttachmentr   r&   r   r   )	surat_objuser_idversionattachmentsattr?   r?   r@   save_surat_versionW   s6   rf   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 qbdS )	zq
    Rollback surat ke versi tertentu.
    Backup versi aktif dulu ke history, lalu restore metadata & file.
    r	   rI   TrC   )r^   F)r   r   r&   r   r   r   N)r   r   r   r   r_   rf   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r/   r   rE   rF   r`   r
   r   r   r&   r   r   )r   
version_idrb   suratrc   v_attr?   r?   r@   rollback_suratx   s8   
rj   )r%   r!   django.confr   webapp.commonr   r   webapp.modelsr   r   RELPATHr&   r(   BASE_DIRr)   r*   rA   rG   rJ   rO   rf   rj   r?   r?   r?   r@   <module>   s    -!