o
    Ci                     @   sj   d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 dZ
dZdd	d
Zdd Zdd ZdS )    )settingsN)datetimetimezone)relativedelta)cacheairflow_api_tokeni  Fc                 C   sx   | st t}|r|S tj}tj tj d}tj||ddid}|j	dkr:|
 }t jt|dtd |dS dS )	N)usernamepasswordzContent-Typezapplication/json)jsonheaders   access_token)timeoutunauthorised)r   getTOKEN_CACHE_KEYr   airflow_urlairflow_usernameairflow_passwordrequestspoststatus_coder
   set	TOKEN_TTL)force_refreshcached_token	login_urlpayloadresponsedata r    $/var/www/Datamplify/Monitor/utils.pyairflow_token   s    


r"   c                 C   s  t | tr| dr| d d d }t|}t | tr+| }|jd u r*|jtjd}nt	dt
| ttj}t||}|jdkrX|jdkrR|j d|j dS |j d	S |jdkrc|j dS |jdkrn|j d
S |jdkry|j dS |jdkr|j dS dS )NZz+00:00)tzinfoz*time_ago() expects str or datetime, got %sr   z years z months agoz
 years agoz	 days agoz
 hours agoz	 mins agozjust now)
isinstancestrendswithr   fromisoformatr%   replacer   utc	TypeErrortypenowpytzr   yearsmonthsdayshoursminutes)timestamp_str	timestampr.   deltar    r    r!   time_ago"   s2   











r8   c           
      C   s   |   }| jdd  }| jdd  }| jdd  }|||d}|r*|| d nd}|r4|| d nd}|r>|| d nd}t|dt|dt|dd}	|||	dS )	Nsuccess)statusfailedrunning)r9   r;   r<   d   r   )
total_runscountsrate)countfilterround)
current_runsr>   success_countfailure_countrunning_countr?   success_ratefailure_raterunning_rateratesr    r    r!   count_by_dateH   s&   rL   )F)
Datamplifyr   r   r/   r   r   dateutil.relativedeltar   django.core.cacher   r   r   r"   r8   rL   r    r    r    r!   <module>   s    
&