U
    3!h                     @   s\   d dl Z d dlZd dlZd dlZd dlT d dlZd dlmZ edZG dd de	j
jZdS )    N)*)BoundedSemaphore   c                   @   s    e Zd ZdZejjdd ZdS )PlantumlView/c                 C   sz  t jddd zt }tjdd}tjdd }t jd| d| dd tj	|d	| }|d
krtj
d   }dddtj	tjdd|g}nd}tj	|d}z^t|d6}	tj
d |}
|
r|	|
 tj
d |}
qW 5 Q R X t jd| dd W n: tk
rJ } zt jd| dd  W 5 d }~X Y nX dddtj	tjdd| d||g}t jdd	| dd t }t tj|tjtjdd}W 5 Q R X t | }t jd|dddd |jd krt jd!|j  dd t|j |d
krTt|d}	|	|j W 5 Q R X t jd"| dd t jd#| dd z tjj|d$d%W W  5 Q R  W S  tk
r   t jd&d'd tj d(d) Y W  5 Q R  W S X W 5 Q R X W n tjk
r& } z0t jd*| dd tj d+| d,d) W Y S d }~X Y nP t!k
rt } z0t jd-| dd tj d.| d,d) W Y S d }~X Y nX d S )/NuC   Начало выполнения метода post в PlantumlViewDEBUG)levelformatZsvgobj_idu   Получен формат: z	, obj_id=zresult.Zpumlfilez/usr/bin/javaz -Djava.net.useSystemProxies=truez-jarzplantuml.jarz
-decodeurli    zresult.pumlzwb+u3   Загруженный файл записан в: uB   Ошибка при записи временного файла: ZERRORz-tz-ou%   Выполнение команды:     )stdoutstderrtimeoutu+   Команда завершилась за z.2fu    секr   u9   Команда завершилась с ошибкой: u/   Записан результат в файл: u   Отправка файла: T)Zas_attachmentuh   Клиент разорвал соединение до завершения передачи файлаZWARNINGi  )statusuA   Ошибка выполнения внешней команды: u*   Ошибка обработки PlantUML: i  u+   Исключение в методе post: u0   Ошибка обработки запроса: )"gdebugtempfileZTemporaryDirectoryZrequestvaluesgetospathjoinfilesreaddecodeZconfigZPROJECT_DIRopenwriteIOErrortimeperf_counterPLANTUML_SEMAPHORE
subprocessrunPIPE
returncoder   ZSubprocessErrorr   ZflaskZhelpersZ	send_fileBrokenPipeErrorZResponse	Exception)selfZtmp_dirZ	to_formatr
   Zresult_fileZdecoded_contentcmdZ
chunk_sizeZtemp_filenamefchunkestartresultZduration r0   !./modules/plantuml/views/index.pypost   s|     
 
 
 .(zPlantumlView.postN)__name__
__module____qualname__Z__url__cmfviewsactionr2   r0   r0   r0   r1   r      s   r   )Zloggingr   r#   r   Zcmf.includer    	threadingr   r"   r6   r7   ZBaseViewr   r0   r0   r0   r1   <module>   s   