o
    `oiZ                     @   s   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dlmZ dZd	d
 Zedddd ZG dd dZdS )z
Debug Toolbar middleware
    N)	lru_cache)settings)import_string)DebugToolbar)clear_stack_trace_caches)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
   `/var/www/html/kuke-dev/django-kuke/venv/lib/python3.10/site-packages/debug_toolbar/middleware.pyshow_toolbar   s   r   )maxsizec                  C   s"   t  d } t| trt| S | 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t|r| |S t|| j}|jD ]}|  qz||}W t  t|jD ]}|	  q0nt  t|jD ]}|	  q@w t|jD ]}|
|| ||| qM| }| ||j D ]	\}}||j|< qi|dd}	|dddd }
t|dds|	dk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Content-Encoding zContent-Type;r   Z	streamingFZINSERT_BEFORE)flags   zContent-Length)r   r   Zis_toolbar_requestr   Zenabled_panelsZenable_instrumentationprocess_requestr   reversedZdisable_instrumentationZgenerate_statsZgenerate_server_timingZrender_toolbarget_headersitemsheadersr   splitgetattr_HTML_TYPEScontentdecodecharsetr   r   reescape
IGNORECASElenjoin)r   r	   r   Ztoolbarpanelresponserenderedheadervaluecontent_encodingcontent_typer$   Zinsert_beforepatternbitsr
   r
   r   __call__-   sN   






zDebugToolbarMiddleware.__call__c                 C   sR   i }|D ]"}| |  D ]\}}||v r!||  d| 7  < q|||< qq|S )Nz, )r   r   )r	   Zpanelsr    r,   r/   r0   r
   r
   r   r   e   s   
z"DebugToolbarMiddleware.get_headersN)__name__
__module____qualname____doc__r   r5   staticmethodr   r
   r
   r
   r   r   $   s    8r   )r9   r'   	functoolsr   Zdjango.confr   Zdjango.utils.module_loadingr   Zdebug_toolbarr   Zdebug_toolbar.toolbarr   Zdebug_toolbar.utilsr   r#   r   r   r   r
   r
   r
   r   <module>   s    

