
    7 fZ                         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	 Z ed
      d        Z G d d      Zy)z
Debug Toolbar middleware
    N)	lru_cache)settings)import_string)DebugToolbar)clear_stack_trace_caches)z	text/htmlzapplication/xhtml+xmlc                 |    t         j                  xr+ | j                  j                  d      t         j                  v S )zT
    Default function to determine whether to show the toolbar on a given page.
    REMOTE_ADDR)r   DEBUGMETAgetINTERNAL_IPS)requests    N/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/middleware.pyshow_toolbarr      s-     >>Vgll..}=AVAVVV    )maxsizec                  j    t        j                         d   } t        | t              rt	        |       S | S )NSHOW_TOOLBAR_CALLBACK)dt_settings
get_config
isinstancestrr   )func_or_paths    r   get_show_toolbarr      s3     ))+,CDL,$\**r   c                   ,    e Zd ZdZd Zd Zed        Zy)DebugToolbarMiddlewarezm
    Middleware to set up Debug Toolbar on incoming request and render toolbar
    on outgoing response.
    c                     || _         y )N)get_response)selfr   s     r   __init__zDebugToolbarMiddleware.__init__*   s
    (r   c                 .   t               } ||      rt        j                  |      r| j                  |      S t        || j                        }|j                  D ]  }|j                           	 |j                  |      }t                t        |j                        D ]  }|j                           	 t        |j                        D ]&  }|j                  ||       |j                  ||       ( |j                         }| j                  ||j                        j                         D ]  \  }}||j                  |<    |j!                  dd      }	|j!                  dd      j#                  d      d   }
t%        |dd      s|	dk7  s|
t&        vr|S |j(                  j+                  |j,                        }t/        j0                         d   }t3        j4                  |      }t3        j"                  ||t2        j6                  	      }t9        |      d
kD  r?|dxx   |z  cc<   |j;                  |      |_        d|v rt9        |j(                        |d<   |S # t                t        |j                        D ]  }|j                           w xY w)NzContent-Encoding zContent-Type;r   	streamingF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   splitgetattr_HTML_TYPEScontentdecodecharsetr   r   reescape
IGNORECASElenjoin)r   r   r   toolbarpanelresponserenderedheadervaluecontent_encodingcontent_typer8   insert_beforepatternbitss                  r   __call__zDebugToolbarMiddleware.__call__-   s_   ')G$(G(G(P$$W--w(9(9: ++ 	+E((*	+	0..w7H$& "'"8"89 0--/0
 g445 	<E  (3(((;	< ))+!--gw7M7MNTTV 	-MFE',HV$	- $<<(:B?||NB7==cB1EHk512%;.O ""))(*:*:;#..0A))M*xx>t9q=H H,11$7H8+-01A1A-B)*O %& "'"8"89 0--/0s   1I 6Jc                     i }|D ]C  }|j                  |       j                         D ]  \  }}||v r||xx   d| z  cc<   |||<   ! E |S )Nz, )r2   r3   )r   panelsr4   rA   rD   rE   s         r   r2   z"DebugToolbarMiddleware.get_headerse   si     	,E!&!2!27!;!A!A!C ,W$FOE7|3O&+GFO	,	, r   N)__name__
__module____qualname____doc__r    rK   staticmethodr2    r   r   r   r   $   s&    
)6p  r   r   )rQ   r;   	functoolsr   django.confr   django.utils.module_loadingr   debug_toolbarr   debug_toolbar.toolbarr   debug_toolbar.utilsr   r7   r   r   r   rS   r   r   <module>rZ      sQ    
    5 1 . 84W 4 J Jr   