o
    ȕh                     @   sP  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlZd dl	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mZmZ ddl
mZmZ ddlmZ eeZdZ dd Z!ej"eddidej#ddej$dej%dd Z&dd Z'dd Z(dd Z)dd  Z*d!d" Z+d#d$ Z,d%d& Z-d'd( Z.dS ))    N)pformat)NullHandler)options)parse_command_lineparse_config_file)enable_pretty_logging)CeleryCommand   )Flower)settings)abs_pathprepend_url	strtobool)DEFAULT_CONFIG_FILEdefault_options)validate_auth_optionFLOWER_c                 C   s   t d|  td d S )Nz%s detected, shutting downr   )loggerinfosysexit)signum_ r   K/var/www/Befach/backend/venv/lib/python3.10/site-packages/flower/command.pysigterm_handler   s   r   ignore_unknown_optionsT)clscontext_settingstornado_argv)nargstypec              	   C   s   t | | t  ttjd | t  t  | jj}t	d|t
dt}t|j ttjt | jjs<t|dtv  z|  W dS  ttfyO   Y dS w )zAWeb based tool for monitoring and administrating Celery clusters.r   )cappr   ssl_optionsNr   )-warn_about_celery_args_used_in_flower_commandapply_env_optionsapply_optionsr   argvextract_settingssetup_loggingobjappr
   r   r   atexitregisterstopsignalSIGTERMr   quietprint_bannerstartKeyboardInterrupt
SystemExit)ctxr   r,   
flower_appr   r   r   flower    s    
r9   c               	      s   t ttj} | D ]Q}|tdd }tj| }ztj|  W n t	y1   tj|dd  Y nw  j
rB fdd|dD }n jtu rNtt|}n |}tt|| qdS )	z2apply options passed through environment variables r	   r   -c                    s   g | ]}  |qS r   )r"   ).0ioptionr   r   
<listcomp>I   s    z%apply_env_options.<locals>.<listcomp>,N)filteris_flower_envvarosenvironreplaceENV_VAR_PREFIXlowerr   _optionsKeyErrormultiplesplitr"   boolr   setattr)env_optionsenv_var_namenamevaluer   r>   r   r&   >   s    


r&   c                 C   sp   t tt|}t| g|  zttjtj	dd t| g|  W dS  t
y7   tjtj	tkr4 Y dS w )z3apply options passed through the configuration fileF)finalN)listrB   is_flower_optionr   r   rD   pathabspathr   confIOErrorbasenamer   )	prog_namer(   r   r   r   r'   R   s   r'   c                 C   s\   dd | j jjD }g }|D ]}|d\}}}||v r!|| q|r,td| d S d S )Nc                 S   s   g | ]
}|j D ]}|qqS r   )opts)r<   paramr?   r   r   r   r@   `   s    zAwarn_about_celery_args_used_in_flower_command.<locals>.<listcomp>=zYou have incorrectly specified the following celery arguments after flower command: %s. Please specify them after celery command instead following this template: celery [celery args] flower [flower args].)parentcommandparams	partitionappendr   warning)r7   flower_argscelery_optionsincorrectly_used_argsargarg_namer   r   r   r   r%   _   s   
r%   c                   C   sB   t jrt jdkrdt _t  d S tdt  dtd_d S )Nr   debugztornado.accessF)r   rj   loggingr   	getLogger
addHandlerr   	propagater   r   r   r   r*   q   s
   
r*   c                  C   s   t jtd< t jrt jtd< t jrdD ]} tt|  t jt| < qt jr?t jp*tj	
dt jp2tj	
dt jp:tj	
ddtd< t jr_t jr_ttt jtt jd	td
< t jr_tt jtd
 d< t jrutt jswtdt j td d S d S d S )Nrj   cookie_secret)	login_urlstatic_url_prefixFLOWER_OAUTH2_KEYFLOWER_OAUTH2_SECRETFLOWER_OAUTH2_REDIRECT_URI)keysecretredirect_urioauth)certfilekeyfiler$   ca_certszInvalid '--auth' option: %sr	   )r   rj   r   ro   
url_prefixr   auth
oauth2_keyrD   rE   getoauth2_secretoauth2_redirect_uriry   rz   dictr   r{   r   r   errorr   r   rQ   r   r   r   r)   z   s*   




r)   c                 C   s,   |  dd\}}}|dd}tt|S )Nr;   r^   r   )lstriprb   rF   hasattrr   )rh   rQ   r   r   r   r   rU      s   
rU   c                 C   s"   |  to| ttd   tv S )N)
startswithrG   lenrH   r   r   r   r   r   rC      s   
rC   c                 C   s   t js"t jrdt j d}nd}td|rdndt jpdt j| ntdt j td|    tdt	t
| j  td	t	t d S )
N/r:   zVisit me at http%s://%s:%s%ssz0.0.0.0z!Visit me via unix socket file: %sz
Broker: %szRegistered tasks: 
%szSettings: %s)r   unix_socketr|   r   r   addressport
connectionas_urir   sortedtaskskeysrj   r   )r,   ssl
prefix_strr   r   r   r3      s    r3   )/rD   r   r-   r0   rk   pprintr   r   clicktornado.optionsr   r   r   tornado.logr   celery.bin.baser   r,   r
   urlsr   utilsr   r   r   r   r   
views.authr   rl   __name__r   rG   r   r`   argumentUNPROCESSEDpass_contextr9   r&   r'   r%   r*   r)   rU   rC   r3   r   r   r   r   <module>   sF    
	