U
    jR                     @   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   s~  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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
rL } zt jd| dd  W 5 d }~X Y nX d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rXt|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
rx } z0t jd.| dd tj d/| d-d* W Y S d }~X Y nX d S )0NuC   Начало выполнения метода post в PlantumlViewDEBUG)levelformatZsvgobj_idu   Получен формат: z	, obj_id=zresult.Zpumlfilez/usr/bin/javaz#-DPLANTUML_SECURITY_PROFILE=SANDBOXz -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   