a
    ތxd                     @   st   d 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 dZdd	 Ze d
d ZG dd dZdS )z
Debug Toolbar middleware
    N)	lru_cache)settings)import_string)DebugToolbar)z	text/htmlzapplication/xhtml+xmlc                 C   s   t jo| jdt jv S )zT
    Default function to determine whether to show the toolbar on a given page.
    ZREMOTE_ADDR)r   DEBUGZMETAgetZINTERNAL_IPS)request r	   P/var/www/html/Ranjet/env/lib/python3.9/site-packages/debug_toolbar/middleware.pyshow_toolbar   s    r   c                  C   s&   t  d } t| trt| S | S d S )NZSHOW_TOOLBAR_CALLBACK)dt_settings
get_config
isinstancestrr   )Zfunc_or_pathr	   r	   r
   get_show_toolbar   s    
r   c                   @   s,   e Zd ZdZdd Zdd Zedd ZdS )	DebugToolbarMiddlewarezm
    Middleware to set up Debug Toolbar on incoming request and render toolbar
    on outgoing response.
    c                 C   s
   || _ d S )N)get_response)selfr   r	   r	   r
   __init__)   s    zDebugToolbarMiddleware.__init__c              	   C   s  t  }||r|jdr$| |S t|| j}|jD ]}|  q6z&||}W t|jD ]}|	  q\nt|jD ]}|	  qv0 t|jD ]}|
|| ||| q| ||j}| }|dd}|dddd }t|ddsd	|v s|tvr|S |j|j}	t d
 }
t|
}tj||	tjd}t|dkr|d  |7  < |
||_d|v rt|j|d< |S )Nz/__debug__/zContent-Encoding zContent-Type;r   Z	streamingFgzipZINSERT_BEFORE)flags   zContent-Length)r   path
startswithr   r   Zenabled_panelsZenable_instrumentationprocess_requestreversedZdisable_instrumentationZgenerate_statsZgenerate_server_timinggenerate_server_timing_headerZrender_toolbarr   splitgetattr_HTML_TYPEScontentdecodecharsetr   r   reescape
IGNORECASElenjoin)r   r   r   Ztoolbarpanelresponserenderedcontent_encodingcontent_typer#   Zinsert_beforepatternbitsr	   r	   r
   __call__,   sH    





zDebugToolbarMiddleware.__call__c                 C   sh   g }|D ]H}|  }|sq| D ],\}}|d|j||d|d q"q|rdd|| d< | S )Nz{}_{};dur={};desc="{}"valuetitlez, zServer-Timing)Zget_server_timing_statsitemsappendformatZpanel_idr   r*   )r,   Zpanelsdatar+   statskeyrecordr	   r	   r
   r   b   s    z4DebugToolbarMiddleware.generate_server_timing_headerN)__name__
__module____qualname____doc__r   r2   staticmethodr   r	   r	   r	   r
   r   #   s
   6r   )r?   r&   	functoolsr   Zdjango.confr   Zdjango.utils.module_loadingr   Zdebug_toolbarr   Zdebug_toolbar.toolbarr   r"   r   r   r   r	   r	   r	   r
   <module>   s   

