a
    xd                     @   s8  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 ddl
mZmZ eeZ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)DEFAULT_CONFIG_FILEdefault_optionsZFLOWER_Zignore_unknown_optionsT)clsZcontext_settingstornado_argv)nargstypec              	   C   s   t | | t  ttjd | t  t  | jj}t	f |t
dt}t|j dd }ttj| t|dtv  z|  W n ttfy   Y n0 dS )zAWeb based tool for monitoring and administrating Celery clusters.r   )Zcappr   c                 S   s   t d td d S )NzSIGTERM detected, shutting downr   )loggerinfosysexit)signalframe r   F/var/www/html/Ranjet/env/lib/python3.9/site-packages/flower/command.pysigterm_handler.   s    
zflower.<locals>.sigterm_handlerssl_optionsN)-warn_about_celery_args_used_in_flower_commandapply_env_optionsapply_optionsr   argvextract_settingssetup_loggingobjappr
   r   r   atexitregisterstopr   SIGTERMprint_bannerstartKeyboardInterrupt
SystemExit)ctxr   r&   flowerr   r   r   r   r0      s    
r0   c               	      s   t ttj} | D ]}|tdd }tj| }ztj|  W n$ t	yb   tj|dd  Y n0  j
r fdd|dD }n
 |}tt|| qdS )	z2apply options passed through environment variables r	   _-c                    s   g | ]}  |qS r   )r   ).0ioptionr   r   
<listcomp>E       z%apply_env_options.<locals>.<listcomp>,N)filteris_flower_envvarosenvironreplaceENV_VAR_PREFIXlowerr   _optionsKeyErrormultiplesplitr   setattr)Zenv_optionsZenv_var_namenamevaluer   r6   r   r    :   s    

r    c                 C   sp   t tt|}t| g|  z(ttjtj	dd t| g|  W n& t
yj   tjtj	tkrf Y n0 dS )z3apply options passed through the configuration fileF)finalN)listr;   is_flower_optionr   r   r=   pathabspathr   confIOErrorbasenamer   )Z	prog_namer"   r   r   r   r!   K   s    r!   c                 C   s^   dd | j jjD }g }|D ]&}|d\}}}||v r|| q|rZtd| d d S )Nc                 S   s   g | ]}|j D ]}|qqS r   )opts)r4   paramr7   r   r   r   r8   Y   r9   zAwarn_about_celery_args_used_in_flower_command.<locals>.<listcomp>=zTYou have incorrectly specified the following celery arguments after flower command: zv. Please specify them after celery command instead following this template: celery [celery args] flower [flower args].)parentcommandparams	partitionappendr   warning)r/   Zflower_argsZcelery_optionsZincorrectly_used_argsargZarg_namer2   r   r   r   r   X   s    r   c                   C   s@   t jrt jdkrdt _t  ntdt  dtd_d S )Nr   debugztornado.accessF)r   r[   loggingr   	getLogger
addHandlerr   	propagater   r   r   r   r$   j   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pTtj	
dt jpdtj	
dt jpttj	
ddtd< t jrt jrttt jtt jd	td
< t jrtt jtd
 d< d S )Nr[   cookie_secret)Z	login_urlZstatic_url_prefixZFLOWER_OAUTH2_KEYZFLOWER_OAUTH2_SECRETZFLOWER_OAUTH2_REDIRECT_URI)keysecretZredirect_uriZoauth)certfilekeyfiler   ca_certs)r   r[   r   r`   Z
url_prefixr   authZ
oauth2_keyr=   r>   getZoauth2_secretZoauth2_redirect_urirc   rd   dictr   re   rG   r   r   r   r#   s   s"    




r#   c                 C   s,   |  dd\}}}|dd}tt|S )Nr3   rS   r2   )lstriprW   r?   hasattrr   )rZ   rG   r2   r   r   r   rK      s    rK   c                 C   s"   |  to | ttd   tv S )N)
startswithr@   lenrA   r   ri   r   r   r   r<      s    
r<   c                 C   sx   t js(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 )	NzVisit me at http%s://%s:%ssr1   	localhostz!Visit me via unix socket file: %sz
Broker: %szRegistered tasks: 
%szSettings: %s)r   Zunix_socketr   r   addressport
connectionas_urir   sortedZtaskskeysr[   r   )r&   sslr   r   r   r+      s    r+   )+r=   r   r'   r   r\   pprintr   r   ZclickZtornado.optionsr   r   r   Ztornado.logr   Zcelery.bin.baser   r&   r
   urlsr   utilsr   r   r   r   r]   __name__r   r@   rU   argumentZUNPROCESSEDZpass_contextr0   r    r!   r   r$   r#   rK   r<   r+   r   r   r   r   <module>   s@   
	