U
    dM
                     @   sj   d dl Z d dl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	 e 
eZG dd	 d	eZdS )
    N)web)gen   )BaseHandler)options)ListWorkersc                   @   s8   e Zd Zejejdd Zedd Z	edd Z
dS )DashboardViewc              
   C   s  | j ddtd}| j ddtd}| jjj}|rlz| j  W n. tk
rj } ztd| W 5 d }~X Y nX i }|j	
 D ]L\}}||jkrqz|j| }t|}	|	| | |	j|jd |	||< qztjd k	r\tt }
g }|
 D ]X\}}	|	ddrq|	d	g }|r"tt|nd }|r:|
| tjkr|| q|D ]}|| qJ|r|| tt| d
 n.| jd|| jj  | jjjrdndd d S )NrefreshF)defaulttypejsonzFailed to update workers: %s)statusr   T
heartbeats)datazdashboard.html   r   )workersZbrokerZautorefresh) Zget_argumentboolZapplicationeventsstateZupdate_workers	Exceptionlogger	exceptioncounteritemsr   dictupdate_as_dictaliver   Zpurge_offline_workersinttimegetmaxappendpopwritelistvaluesrenderZcapp
connectionas_uriZauto_refresh)selfr	   r   r   er   namer&   workerinfo	timestampZoffline_workersr   Zlast_heartbeat r0   :/tmp/pip-unpacked-wheel-3pokl8eb/flower/views/dashboard.pyr       sH    



zDashboardView.getc                    s0   t  dr"t fdd jD S |  S d S )N_fieldsc                 3   s   | ]}|  |fV  qd S N)__getattribute__).0kr-   r0   r1   	<genexpr>B   s     z)DashboardView._as_dict.<locals>.<genexpr>)hasattrr   r2   _info)clsr-   r0   r7   r1   r   ?   s    
zDashboardView._as_dictc                    s   d  fdd}t | S )N)hostnamepidfreqr   Zclockactive	processedZloadavgZsw_identZsw_verZsw_sysc                  3   s,    D ]"} t | d }|d k	r| |fV  qd S r3   )getattr)keyvaluer2   r-   r0   r1   _keysL   s    z"DashboardView._info.<locals>._keys)r   )r;   r-   rE   r0   rD   r1   r:   F   s    zDashboardView._infoN)__name__
__module____qualname__r   authenticatedr   	coroutiner    classmethodr   r:   r0   r0   r0   r1   r      s   -
r   )loggingr   Ztornador   r   Zviewsr   r   Zapi.workersr   	getLoggerrF   r   r   r0   r0   r0   r1   <module>   s   
