o
    h                     @   s   d Z 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 ddlmZm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is_processable_html_responsec                 C   sv   t jsdS | jdt jv rdS zdtdddd d }| jd|kr-W dS W dS  tj	y:   Y dS w )	zT
    Default function to determine whether to show the toolbar on a given page.
    FREMOTE_ADDRT.zhost.docker.internalNz.1)
r   DEBUGMETAgetINTERNAL_IPSjoinsocketgethostbynamersplitgaierror)request	docker_ip r   V/var/www/html/ictaz-jobs/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 )NSHOW_TOOLBAR_CALLBACK)dt_settings
get_config
isinstancestrr   )func_or_pathr   r   r   get_show_toolbar0   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__A   s   
zDebugToolbarMiddleware.__init__c              	   C   sj  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|< qit|sy|S |j|j}	t d }
t|
}tj||	tjd}t|dkr|d  |7  < |
||_d|v rt|j|d< |S )NINSERT_BEFORE)flags   zContent-Length)r    r   is_toolbar_requestr"   enabled_panelsenable_instrumentationprocess_requestr   reverseddisable_instrumentationgenerate_statsgenerate_server_timingrender_toolbarget_headersitemsheadersr   contentdecodecharsetr   r   reescapesplit
IGNORECASElenr   )r#   r   r   toolbarpanelresponserenderedheadervaluer5   insert_beforepatternbitsr   r   r   __call__D   sD   





zDebugToolbarMiddleware.__call__c                 C   sR   i }|D ]"}| |  D ]\}}||v r!||  d| 7  < q|||< qq|S )Nz, )r2   r3   )r   panelsr4   r>   rA   rB   r   r   r   r2   v   s   
z"DebugToolbarMiddleware.get_headersN)__name__
__module____qualname____doc__r$   rF   staticmethodr2   r   r   r   r   r!   ;   s    2r!   )rK   r8   r   	functoolsr   django.confr   django.utils.module_loadingr   debug_toolbarr   debug_toolbar.toolbarr   debug_toolbar.utilsr   r   r   r    r!   r   r   r   r   <module>   s    

