
    ]j                         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 Z e       d	        Z G d
 d      Zy)z
Debug Toolbar middleware
    N)	lru_cache)settings)import_string)DebugToolbar)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    B/root/env/lib/python3.12/site-packages/debug_toolbar/middleware.pyshow_toolbarr      s-     >>Vgll..}=AVAVVV    c                  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        |j                        D ]  }|j                           	 t        |j                        D ]&  }|j                  ||       |j                  ||       ( | j                  ||j                        }|j                         }|j                  dd      }|j                  dd      j                  d      d   }t        |dd      sd|v s|t         vr|S |j"                  j%                  |j&                        }	t)        j*                         d	   }
t-        j.                  |
      }t-        j                  ||	t,        j0                  
      }t3        |      dkD  r?|dxx   |z  cc<   |
j5                  |      |_        d|v rt3        |j"                        |d<   |S # t        |j                        D ]  }|j                           w xY w)NzContent-Encoding zContent-Type;r   	streamingFgzipINSERT_BEFORE)flags   zContent-Length)r   r   is_toolbar_requestr   enabled_panelsenable_instrumentationprocess_requestreverseddisable_instrumentationgenerate_statsgenerate_server_timinggenerate_server_timing_headerrender_toolbarr   splitgetattr_HTML_TYPEScontentdecodecharsetr   r   reescape
IGNORECASElenjoin)r   r   r   toolbarpanelresponserenderedcontent_encodingcontent_typer5   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(((;	< 55h@V@VW ))+ $<<(:B?||NB7==cB1EHk51));.O ""))(*:*:;#..0A))M*xx>t9q=H H,11$7H8+-01A1A-B)*G "'"8"89 0--/0s   1H. .,Ic                 0   g }|D ]x  }|j                         }|s|j                         D ]P  \  }}|j                  dj                  |j                  ||j                  d      |j                  d                   R z |rdj                  |      | d<   | S )Nz{}_{};dur={};desc="{}"valuetitlez, zServer-Timing)get_server_timing_statsitemsappendformatpanel_idr   r<   )r?   panelsdatar>   statskeyrecords          r   r0   z4DebugToolbarMiddleware.generate_server_timing_headerb   s     	E113E${{} V,33VZZ-@&**WBU	 (,		$H_%r   N)__name__
__module____qualname____doc__r   rF   staticmethodr0    r   r   r   r   #   s&    
)4l  r   r   )rW   r8   	functoolsr   django.confr   django.utils.module_loadingr   debug_toolbarr   debug_toolbar.toolbarr   r4   r   r   r   rY   r   r   <module>r_      sK    
    5 1 .4W  R Rr   