U
    gT                     @   sx   d dl Z d dlZd dlZd dlZd dlmZ d dlT d dlZd dlZd dlZd dl	Z	d dl
m
Z
 G dd dejjZdS )    N)Path)*)datetimec                   @   s(   e Zd ZdZejjdd Zdd ZdS )ConverterView/c              
   C   sD   z
|   W S  tk
r> } ztd|  |W 5 d}~X Y nX dS )u   
        :param to_format: 
        - default: pdf
        - pdf_sheets: если нужно каждый лист excel/calc выгрузить в отдельный pdf
        u0   Ошибка обработки запроса: N)_process_post	Exceptionprint)selfe r   "./modules/converter/views/index.pypost   s
    
zConverterView.postc                 C   s   d}t jdd}|dkr<t jdr8t jdds<d}t }tjd|d	 d
 d |dkrt jdrt jddrt	t j
d }t|j | d}t|d}||j W 5 Q R X tj|W  5 Q R  W  5 Q R  S |dkrt| d}t|d}|t j
d   W 5 Q R X tjdddddgddd d| d}	td|	 zVtjdddd d!d"|	 d#t|d$| d%g	ddd&}
|
jdd}|d'krtd(W n^ tjk
r } z<td) t !t "|
j#t$j% t !t "|
j#t$j& |W 5 d }~X Y nX tjd*d|dd+}
| d,}t j'(|rltj|W  5 Q R  W  5 Q R  S W 5 Q R  W 5 Q R  d S nt| d-t jd.  }t|d}|t j
d   W 5 Q R X |dkr|j)d/krd0}nd1}d| d}	td|	 t j'*|}d2dd!d"|	 d#d3d4| d4t|d5|g
}t+d6,|d7|ddd8\}}}}|rZtd9d6,| d:| d;| d<| d=| d>| t-j.d? td@t-j.d? t+d6,|d7|ddd8\}}}}|rZt/0 1dA}dB}t j'(|st j2|dCdD | d| dE|3ddF  dG}tdH| t-j.d? t4|| t5dI| d:| d<| d=| tdJ| d<| d=| t-j6d? d }tt 7| t 7|D ]@}| d| }||j)rqt j'8| rАq qڐqt| tj|W  5 Q R  W  5 Q R  S W 5 Q R X W 5 Q R X d S )KN   formatZpdfZhtmlZmimetypez	.documentiX  zlibreoffice-convert-document      )timeoutfilez/result.htmlzw+Z
pdf_sheetsz/fullview.xlszwb+rsyncz-az--deletez'/opt/eva-converter/libreoffice_scripts/z'/root/.config/libreoffice/4/user/basic/<   T)r   checkr   z/.lo_profilez/root/.config/libreoffice/4/z/usr/bin/libreofficez
--headlessz--nologoz--nofirststartwizardz--norestorez-env:UserInstallation=file://z-env:SingleAppInstance=falsez&macro:///Standard.Module1.ExportToPdf())Zstart_new_sessionZ	close_fdsr   u'   Ошибка запуска libreofficez:Timeout 60 expired. Terminating the whole process group...z%tar -cf fullview.tar fullview_page*.*)r   cwdshellz/fullview.tarz/previewsuffixz.xlsxz html:HTML (StarCalc):EmbedImagesz"html:XHTML Writer File:EmbedImagesZlibreofficez--convert-to'z--outdir F)Zsudor   Zseparate_out_and_errZmeasure_runtimeu.   Ошибка создания файла! cmd=z, out=z, err=z, size=z
, runtime=z, res=)r   u   Повторим попыткуz%Y%m%d_%H%Mz/var/spool/converter_errorsi	  )mode_z_preview.htmluA   Ошибка повторилась! Сохраняем файл zerr=zconverter_time: to_format=)9ZrequestvaluesgetendswithtempfileZTemporaryDirectoryZcmfutilZCmfLockmammothZconvert_to_htmlfilesgdebugmessagesopenwritevalueZflaskZhelpersZ	send_filer   read
subprocessrunshutilcopytreePopenstrwaitr   ZTimeoutExpiredr	   oskillpggetpgidpidsignalSIGTERMSIGKILLpathexistsr   getsizeZrun_bash_commandjoinsysstderrr   nowstrftimemkdirsplitcopy2ZSubprocessErrorstdoutlistdirisdir)r
   r   Z	to_formatZtmp_dirresultZres_pathfZ	file_pathfpZlo_profile_dirprocretr   sizecmdresouterrZruntimerB   Zconverter_errorsZ
debug_file	file_namer   r   r   r      s    &&
$


	

$


 8  " 

zConverterView._process_postN)	__name__
__module____qualname__Z__url__cmfviewsactionr   r   r   r   r   r   r      s   
r   )r.   r5   r9   r$   pathlibr   Zcmf.includer%   r@   r0   r   rX   rY   ZBaseViewr   r   r   r   r   <module>   s   