a
    ؁hO-                     @   s  d dl mZ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mZ d dlmZ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mZ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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l,m-Z- d dl.Z.d dl/m0Z0 d dl1m2Z2 d dl mZmZ d dl3Z3d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl6m:Z: d dl*m+Z+ d dl m#Z# d dl.Z.d dl;Z;d dl<m=Z= d dl>Z>d dl(m)Z) d dl<m=Z= d d l?m@Z@ d dl;Z;d d!lAmBZBmCZC d d"lDmEZE d d#lFmGZG d d$lHmIZI d%d& ZJe%e'd'd( ZKe%e'd)d* ZLd+d, ZMd-d. ZNd5d/d0ZOd6d1d2ZPd3d4 ZQdS )7    )Http404HttpResponse)PermissionDenied)renderredirect)models)ExtractYear	TruncDateExtractMonth)koleksimaster)dumpcreate_thumbnail)QCount)HttpResponseRedirectr   )	Paginator)r   Value	CharFieldIntegerField)Cast)r   	TextField)r   currencytgl_indo)JsonResponser   )csrf_exempt)require_POST)default_storage)ContentFile)DocumentN)	PdfReader)BytesIO)r   r   )Image)convert_from_bytes)	Converter)convert_from_path)r   )settings)slugify)ContentVersionContentVersionAttachment)Users)upload_to_drive)messagesc              
   C   s   | j dkr| jd}|rtz t||j}td|jddW S  typ } ztdt|dW  Y d }~S d }~0 0 ntdddS tdd	dS )
NPOSTfilesuccesszHhttps://drive.google.com/drive/folders/19pH19iCJ8hNr9OF0TwyWwMiKeR-_iecS)status	file_nameZweb_linkerrorr1   messagezFile tidak ditemukan.zMetode request harus POST)methodFILESgetr,   namer   	Exceptionstr)requestr/   linke r?   GD:\WORK\M-FILE\MFILE_PAPTENG_NEW\mfile_papteng_new\webapp\views\main.pyupload_pdf_to_drive9   s    

*rA   c                 C   s  | j dkr| jdr| jd }t jd d }ttj	|j
d }| d| d}tjtjd|}tjtj|dd	 t|d
(}| D ]}|| qW d    n1 s0    Y  t|}g }	tjtjd| d| }
tj|
dd	 tt|D ]r}||}|jtddd}d|d  d}tj|
|}|| tj d| d| d| }|	| q|  td|	dS tdddddS )Nr.   r/      r   -.pdfZconverted_pdfsT)exist_okzwb+Zconverted_images   )matrixZpage_   z.pngzconverted_images//r0   )r1   imagesr3   zNo PDF file providedr4     r1   )r6   r7   r8   uuiduuid4hexr(   ospathsplitextr9   joinr'   
MEDIA_ROOTmakedirsdirnamer   openchunkswritefitzrangelen	load_page
get_pixmapMatrixsave	MEDIA_URLappendcloser   )r<   Zpdf_fileZ	unique_id	base_namefilenameZpdf_pathdestinationchunkdocZ
image_urlsZimage_folderipagepixZimage_filenameZ
image_pathZ	image_urlr?   r?   r@   convert_to_imagesJ   s2    
*


rl   c                 C   s   | j d}|r|jds(tdddS tjddd$}||  |j}W d    n1 s`0    Y  |	dd}t
|}|j|d	d d
 |  t|d8}t| dd}dtj| d|d< W d    n1 s0    Y  t| t| |S )Nr/   rD   z(File tidak valid. Harap unggah file PDF.rK   rL   F)deletesuffixz.docxr   )startendrbzGapplication/vnd.openxmlformats-officedocument.wordprocessingml.document)content_typezattachment; filename=""zContent-Disposition)r7   r8   r9   endswithr   tempfileNamedTemporaryFilerY   readreplacer%   convertrc   rW   rP   rQ   basenameremove)r<   r/   Ztmp_pdfZtmp_pdf_pathZtmp_docx_pathZcvZ	docx_fileresponser?   r?   r@   convert_to_words   s     $6

r}   c                 C   s   t dS )Ndash)r   )r<   r?   r?   r@   home   s    r   c                 C   s  | j dtjjddd }t|}tjjj|d dd d dd}t	j
jj|d	 }t	j
jj|d	 }t	jjj|d
td}|d }t	jjj|d
 }t	jjj|d
tdd pd}t	jjj|d
jtdddjtdd}t	jjj|dd }	t	jjj|ddtd}
|
d }
t	jjj|dd }t	jjj|ddtd}|d }t	jjjtddtddB |ddjtdd}t	jjjtddtddB |dtdd }t	jjjd|ddjtdd}t	jjjd|ddjtdd}t	jjj|d }t	jjj|d }t	jjj|dd }t	jjj|dd }t	jjj|ddjtdd}t	jjj|d }ddlm} |j }|jdjtddd  }|jd!jtddd  }|jjtd"d#d$jtddd  }t| d%||t|t|t|||||	|
||t||||p~d&dd'|pd&dd(|pd dd)|||||||rt|ng d*S )+Ntat)currenttahunrF   )Z
tahun__lte   r   )r   )Zpk_contents__tahunsizeZ	size__sumr   created)bulanr   *)totalZMASUK)tanggal__year_typeZsuratf__sizeZsuratf__size__sumZKELUAR)r   )r   Ztanggal__month)Zbanyak)r   r   )AuditLog	user__usrlog_idz-totalaction	timestamp)tanggalr   zdash/home.htmlzN/A)r   r   )r   r   )r   r   )r   tahun_activeberkasmasuk_monthlysuratmasuk_monthlysuratkeluar_monthlybanyak_berkasukuran_berkasr   banyak_surat_masukukuran_surat_masukbanyak_surat_keluarukuran_surat_keluardisposisi_monthlyukuran_disposisi	total_loguser_teraktifaksi_terbanyakhari_terbanyaktotal_berkas_surattotal_disposisitotal_surat_masuktotal_surat_keluartotal_attachmentsukuran_total_attachmentsattachments_monthly)GETr8   m_masterTa	_read_oneintobjectsfiltervalues	m_koleksiContentscountAttachments	aggregater   Sumannotater
   r   Suratr   	Disposisiwebapp.models.masterr   order_byfirstr	   r   list)r<   r   r   Zukuran_banyak_berkasr   r   r   r   r   r   r   r   r   r   Zukuran_berkas_totalr   r   r   r   r   r   r   r   r   r   r   r   r   r?   r?   r@   r~      s    $

&&

$
	r~   c                 C   s
   t | dS )Nz403.htmlr   r<   	exceptionr?   r?   r@   page403+  s    r   c                 C   s
   t | dS )Nz404.htmlr   r   r?   r?   r@   page404/  s    r   c                 C   sR   t jj }|D ]8}zt|j W q tyF } zW Y d }~qd }~0 0 qtdS )NZSukses)r   r   r   allr   rQ   r:   r   )r<   Zberkasri   r>   r?   r?   r@   generate_thumbnail3  s    r   )N)N)Rdjango.httpr   r   django.core.exceptionsr   django.shortcutsr   r   	django.dbr   django.db.models.functionsr   r	   r
   Zwebapp.modelsr   r   r   r   webapp.commonr   r   django.db.modelsr   r   r   django.core.paginatorr   r   r   r   r   r   r   r   r   Zdjango.views.decorators.csrfr   Zdjango.views.decorators.httpr   django.core.files.storager   django.core.files.baser   Zdocxr    rP   ZPyPDF2r!   ior"   ru   PILr#   Z	pdf2imager$   Zpdf2docxr%   r&   rM   django.confr'   rZ   django.utils.textr(   Zwebapp.models.koleksir)   r*   r   r+   Zwebapp.utilsr,   Zdjango.contribr-   rA   rl   r}   r   r~   r   r   r   r?   r?   r?   r@   <module>   sr   ' 

