o
    /iS                     @   s   d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	m
Z d dlmZ d dlmZ dd Zdd	d
Zdd Zdd Zdd Zdd ZdS )    N)settings)create_thumbnail_suratcreate_thumbnail_word
update_tglcreate_thumbnail)koleksi)slugify)process_attachment_fulltextc                 C   s   t | S N)r   )rel_path r   >/var/www/html/mfile_papteng_new/webapp/views/fileman/upload.pyr   
   s   r   c                 C   s  |r|D ]}t jddid|i q|r|D ]}t d }t jjjt jjj|d|j|j	|j
dd}tj}|jjdd	|jjd
d	|jjd
}	tj|j\}
}|j dt|
 | }tj||	|}tjtj||	dd t|d}| D ]}|| q{W d   n1 sw   Y  |	 d	| |_|  t|j | }z|dkrt|j n	|dv rt |j W q t!y } zt"d| W Y d}~qd}~ww dS )uR   
    Tambah file baru + hapus file yang diminta ± pertahankan lampiran lama.
    
is_deletedTpktgldetikr   Fpk_contentsnamesize_typer   04/02-exist_okxb+N.pdf).doc.docxzError thumbnail:)#	m_koleksiAttachments_updater   objectscreateContentsgetr   r   content_typer   FILE_DIRcreatedyearmonthdayospathsplitextr   r   joinmakedirsopenchunkswritesaver	   delaylowerr   r   	Exceptionprint)requestr   	new_filespending_delete_idsatt_idfilerandom_
attachmentprefixinfixr   extfilename	full_pathbufferchunker   r   r   deploy_partial   sN   
&
rJ   c                 C   s  t jddid|i |D ]}t d }t jjjt jjj|d|j|j	|j
dd}tj}|jjdd	|jjd
d	|jjd
}tj|j\}}	|j dt| |	 }
tj|||
}tjtj||dd t|d}| D ]}|| qrW d   n1 sw   Y  | d	|
 |_|  t|j tj|jd  }	z#|	dkrt|j n|	dv rn|	dv rt |j nt!d|	 d W q t"y } zt!d|j d|  W Y d}~qd}~ww dS )zG
    Simpan file baru dan soft-delete semua file aktif sebelumnya.
    r   Tr   r   r   Fr   r   r   r   r   r   r   N   r   )z.jpgz.jpegz.png)r    r   u   ℹ️ Format z tidak didukung thumbnail.u"   ❌ Gagal membuat thumbnail untuk z: )#r!   r"   r#   r   r$   r%   r&   r'   r   r   r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r   r   r1   r2   r3   r4   r5   r6   r	   r7   r8   r   r   r:   r9   )r;   r   filesr?   r@   rA   rB   rC   r   rD   rE   rF   rG   rH   rI   r   r   r   deployC   sN   
&"rM   c                 C      t jddid| i dS )z$Hapus 1 lampiran (soft-delete saja).r   Tr   Nr!   r"   r#   r   r   r   r   destroy_one      rP   c                 C   rN   )z1Soft delete semua lampiran dalam konten tertentu.r   Tr   NrO   )r   r   r   r   destroy_many   rQ   rR   c              
   C   s   z
t jjj| d}W n t jjy   Y dS w ztjtj	|j}tj
|r,t| W n tyD } ztd| W Y d}~nd}~ww |  dS )zv
    Hapus file dari disk + database (PERMANEN).
    Gunakan hanya jika yakin file tak dibutuhkan untuk rollback.
    r   Nu   ❌ Gagal hapus file dari disk:)r!   r"   r$   r'   DoesNotExistr.   r/   r1   r   r)   existsremover9   r:   delete)r   rA   rF   rI   r   r   r   destroy_one_permanent   s   
rW   r
   )r.   hashlibdjango.confr   webapp.commonr   r   r   r   webapp.modelsr   r!   django.utils.textr   webapp.tasksr	   rJ   rM   rP   rR   rW   r   r   r   r   <module>   s    
5q