o
    i                  	   @   s  d dl Z d dlZe jejejejed d dlm	Z	 e	  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Zd dlmZ ed	d
dZe ZejejeZeddZeje dejdd edZeej e e dZ!e"dZ#e!$e# ej%se&e! e'ddd Z(e'ddd Z)e'ddd Z*e'ddd Z+e,d krd dl-Z-e-j.ed!d"d# dS dS )$    Nz..)load_environment_variables)schedule_change)
app_config)FastAPI)	HTTPBasic)ThreadPoolExecutorz/docsz/redoc)docs_url	redoc_url   )max_workersz
/error.logz)%(asctime)s - %(levelname)s - %(message)s)filenamelevelformatapp/app.log4%(asctime)s - %(name)s - %(levelname)s - %(message)s/c                   C   s   ddiS )Nmessageu2   Hello, World!正しく起動。StatusManagement!!! r   r   r   */var/www/html/status_management/src/app.pyroot(   s   r   z/schedule_change/c               
   C   s   t d zt d t  t d W dS  tyU }  z4dd l}| }t dt|   t dt| j	  t d|  d	d
t|  iW  Y d } ~ S d } ~ ww )Nzschedule_change endpoint calledz+Starting schedule_change function executionz/schedule_change function completed successfullyuR   新規日程掲載実行中(2~3分程でSlackに実行完了通知が行きます)r   z'Exception occurred in schedule_change: zException type: zFull traceback: erroru8   新規日程掲載中にエラーが発生しました: )

app_loggerinfor   	Exception	traceback
format_excr   strtype__name__)er   error_tracebackr   r   r   schedule_change_endpoint,   s   


r"   z/management_status/c               
   C   sz   t j} tjtjtdd}t }zt	j
| |gdd|d W dS  ty< } zddt| iW  Y d }~S d }~ww )Nscriptsz!run_grad26_progress_individual.pyTcapture_outputtextenvua   26卒用個別進捗管理が回りました。Slackの完了通知を確認してください。r   ;   スクリプト実行中にエラーが発生しました: )sys
executableospathjoindirnamecurrent_directoryr   get_subprocess_env
subprocessrunr   r   )python_pathscript_pathr'   r    r   r   r   management_status_endpoint>   s   r5   z/grad27_management_status/c               
      sF  t d} | t j t d t  }t d}|| t fdd| j	D s0| 
| | d tj}tjtjtdd}t }z5| d	|  tj||gd
d
|d}|jdkri| d W dS | d|j  | d|j  W dS  ty } z| dt|  ddt| iW  Y d }~S d }~ww )Nstatus_managementr   r   c                 3   s.    | ]}t |tjo|jtj kV  qd S )N)
isinstanceloggingFileHandlerbaseFilenamer+   r,   abspath).0handlerapp_log_pathr   r   	<genexpr>d   s   , z4grad27_management_status_endpoint.<locals>.<genexpr>z(grad27_management_status endpoint calledr#   z!run_grad27_progress_individual.pyzExecuting script: Tr$   r   zScript executed successfullyz Script failed with return code: zstderr: ua   27卒用個別進捗管理が回りました。Slackの完了通知を確認してください。z+Exception occurred while executing script: r   r(   )r8   	getLoggersetLevelINFOr/   r9   	FormattersetFormatteranyhandlers
addHandlerr   r)   r*   r+   r,   r-   r.   r   r0   r1   r2   
returncoder   stderrr   r   )loggerfile_handler	formatterr3   r4   r'   resultr    r   r>   r   !grad27_management_status_endpointV   s>   








rO   __main__z0.0.0.0i(#  )hostport)/r)   r+   r,   appendr;   r-   r.   __file__config.load_envr   workflows.schedule_changer   config.app_configr   fastapir   fastapi.securityr   r8   r1   concurrent.futuresr   r   securityr/   executorbasicConfigERRORrA   r   rB   rC   r9   app_log_handlerrD   app_log_formatterrE   rG   rH   getr   r"   r5   rO   r   uvicornr2   r   r   r   r   <module>   sP    &








.