
    ]j	                         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 d dlmZ ddlmZ dd	lmZmZ 	 d d
lZddlmZ d
ad Zed        Zeed               Zedd       Zy
# e$ r d
xZZY /w xY w)    )compare_digest)admin)staff_member_required)Http404HttpResponseJsonResponse)render)never_cache   )	API_TOKEN)get_scheduler_statisticsget_statisticsN)RQCollectorc                    | j                   j                  dd      }d }|j                  d      r|j                  d      j	                         }| j
                  j                  xs t        xr |xr t        t        |      S )NAuthorization zBearer )	headersget
startswithremoveprefixstripuseris_staffr   r   )requestauth_headertokens      ?/root/env/lib/python3.12/site-packages/django_rq/stats_views.pyis_authorizedr      sk    //%%or:KEi(((399;<<  ^Y%]5%]^IW\=]^    c                    t        |       st        ddd      S t        st        d      t        s3t        j                  d      at        j                  t                      t
        j                  j                  | j                  j                  dd            \  }}d| j                  v r.t        j                  | j                  j                  d            at         |t              d	|i
      S )NTTMissing bearer token. Set token in headers and configure RQ_API_TOKEN in settings.pyerrordescriptionzUprometheus_client has not been installed; install using extra "django-rq[prometheus]")auto_describeHTTP_ACCEPTr   zname[]zContent-Type)r   )r   r   r   r   registryprometheus_clientCollectorRegistryregister
expositionchoose_encoderMETAr   GETrestricted_registrygetlistr   )r   encodercontent_types      r   prometheus_metricsr3       s    !  ,B  C
 	
 mnn$66TJ+-(-88GGHXHXYfhjHklG\7;;//0C0CH0MN)NL3QRRr   c                     i t         j                  j                  |       t        d      t	               dt
        d ui}t        | d|      S )NT)run_maintenance_tasksview_metricszdjango_rq/stats.html)r   siteeach_contextr   r   r   r	   )r   context_datas     r   statsr:   7   s]    
**
!
!'
*
t
4 #
$ 	4/	L '1<@@r   c                     t        |       s,|r|t        k(  rt        t                     S t        ddd      S t        t                     S )NTr!   r"   )r   r   r   r   )r   r   s     r   
stats_jsonr<   C   sN    !Ui' 011  0F  G  ())r   )N)secretsr   django.contribr   %django.contrib.admin.views.decoratorsr   django.httpr   r   r   django.shortcutsr	   django.views.decorators.cacher
   settingsr   utilsr   r   r(   contrib.prometheusr   ImportErrorr'   r   r3   r:   r<    r   r   <module>rH      s    "   G ; ; # 5  ;+/ _ S S, A  A 	* 	*i  +&**+s   
A& &	A21A2