
    7 f                         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d	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZmZ  G d d          Zd Z dS )zA
The main DebugToolbar class that loads and renders the Toolbar.
    N)OrderedDict)	lru_cache)apps)ImproperlyConfigured)Signal)TemplateSyntaxError)render_to_string)pathresolve)Resolver404import_string)get_languageoverride)APP_NAMEsettingsc                      e Zd Z e            Zd Zed             Zed             Zd Z	d Z
d Z e            Zd Zed             Zd	Zed
             Zd	Zed             Zed             Ze ed	          d                         Zd	S )DebugToolbarc                    || _         t          j                                                    | _        g }t          |                                           D ]1} || |          }|                    |           |j        r|j	        }2|| _	        t                      | _        |r%|                                }|| j        |j        <   |%i | _        i | _        d | _        | j                            ||            d S )N)toolbar)requestdt_settings
get_configcopyconfigreversedget_panel_classesappendenabledprocess_requestr   _panelspoppanel_idstatsserver_timing_statsstore_id_createdsend)selfr   get_responsepanelspanel_classpanels         K/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/toolbar.py__init__zDebugToolbar.__init__   s    !,..3355#D$:$:$<$<== 	5 	5KKl33EMM%   } 5$4+ #}} 	1JJLLE+0DL(  	1 
#% 7D11111    c                 N    t          | j                                                  S )z5
        Get a list of all available panels.
        )listr!   valuesr)   s    r.   r+   zDebugToolbar.panels2   s     
 DL''))***r0   c                 H    d | j                                         D             S )zG
        Get a list of panels enabled for the current request.
        c                      g | ]}|j         	|S  )r   ).0r-   s     r.   
<listcomp>z/DebugToolbar.enabled_panels.<locals>.<listcomp>>   s    JJJ%EMJJJJr0   )r!   r3   r4   s    r.   enabled_panelszDebugToolbar.enabled_panels9   s'    
 KJ4<#6#6#8#8JJJJr0   c                     | j         |         S )zV
        Get the panel with the given id, which is the class name by default.
        )r!   )r)   r#   s     r.   get_panel_by_idzDebugToolbar.get_panel_by_id@   s     |H%%r0   c                 j   |                                  s|                                  	 d| i}| j        d         pt                      }t	          |          5  t          d|          cddd           S # 1 swxY w Y   dS # t          $ r& t          j        d          st          d          d w xY w)zA
        Renders the overall Toolbar with panels inside.
        r   TOOLBAR_LANGUAGEzdebug_toolbar/base.htmlNzdjango.contrib.staticfileszThe debug toolbar requires the staticfiles contrib app. Add 'django.contrib.staticfiles' to INSTALLED_APPS and define STATIC_URL in your settings.)
should_render_panelsstorer   r   lang_overrider	   r   r   is_installedr   )r)   contextlangs      r.   render_toolbarzDebugToolbar.render_toolbarH   s.    ((** 	JJLLL	 $'G;12DlnnDt$$ L L'(A7KKL L L L L L L L L L L L L L L L L L" 	 	 	$%ABB *:  	 	s/   .B A5(B 5A99B <A9=B 0B2c                 d    | j         d         x} | j        j                            dd          }|S )zDetermine whether the panels should be rendered during the request

        If False, the panels will be loaded via Ajax.
        RENDER_PANELSNzwsgi.multiprocessT)r   r   METAget)r)   render_panelss     r.   r?   z!DebugToolbar.should_render_panels]   s9    
 "[99MB !L-112EtLLMr0   c                    | j         rd S t          j                    j        | _         | | j        | j         <   t          | j        d         t          | j                            D ]}| j                            d           d S )NRESULTS_CACHE_SIZEF)last)	r&   uuiduuid4hex_storeranger   lenpopitem)r)   _s     r.   r@   zDebugToolbar.storeo   s    = 	F
(%)DM"t{#78#dk:J:JKK 	, 	,AKU++++	, 	,r0   c                 6    | j                             |          S )N)rQ   rI   )clsr&   s     r.   fetchzDebugToolbar.fetchx   s    z~~h'''r0   Nc                 f    | j         $d t          j                    D             }|| _         | j         S )Nc                 ,    g | ]}t          |          S r7   r   )r8   
panel_paths     r.   r9   z2DebugToolbar.get_panel_classes.<locals>.<listcomp>   s-       .8j))  r0   )_panel_classesr   
get_panels)rW   panel_classess     r.   r   zDebugToolbar.get_panel_classes   sE    % <G<R<T<T  M "/C!!r0   c                     | j         Sddlm} t          d|j        d          g}|                                 D ]}||                                z  }|| _         | j         S )N   )viewszrender_panel/render_panel)name)_urlpatterns ra   r
   rb   r   get_urls)rW   ra   urlpatternsr,   s       r.   rf   zDebugToolbar.get_urls   s    #
 _e&8~NNNK  #4466 6 6{33555*Cr0   c                     	 |j         p#t          |j        t          |dd                    }n# t          $ r Y dS w xY w|j        o|j        d         t          k    S )zF
        Determine if the request is for a DebugToolbar view.
        urlconfNF)resolver_matchr   r
   getattrr   
namespacesr   )rW   r   rk   s      r.   is_toolbar_requestzDebugToolbar.is_toolbar_request   st    	$3 wggy$??8 8NN  	 	 	55	(V^-Fr-Jh-VVs   +. 
<<)maxsizec                      t          j                    d         } t          | t                    rt	          |           S | S )NOBSERVE_REQUEST_CALLBACK)r   r   
isinstancestrr   )func_or_paths    r.   get_observe_requestz DebugToolbar.get_observe_request   s>    
 #-//0JKlC(( 	  ...r0   )__name__
__module____qualname__r   r'   r/   propertyr+   r:   r<   rE   r?   r   rQ   r@   classmethodrX   r\   r   rd   rf   rn   staticmethodr   ru   r7   r0   r.   r   r      s\       vxxH2 2 20 + + X+ K K XK& & &  *    []]F, , , ( ( [( N" " [" L    [  W W [W Yt     \     r0   r   c                 8    t                               |            S )zM
    Determine whether to update the toolbar from a client side request.
    )r   rn   )r   s    r.   observe_requestr}      s     ..w7777r0   )!__doc__rN   collectionsr   	functoolsr   django.appsr   django.core.exceptionsr   django.dispatchr   django.templater   django.template.loaderr	   django.urlsr
   r   django.urls.exceptionsr   django.utils.module_loadingr   django.utils.translationr   r   rA   debug_toolbarr   r   r   r   r}   r7   r0   r.   <module>r      sN     # # # # # #             7 7 7 7 7 7 " " " " " " / / / / / / 3 3 3 3 3 3 % % % % % % % % . . . . . . 5 5 5 5 5 5 L L L L L L L L ; ; ; ; ; ; ; ;_  _  _  _  _  _  _  _ D8 8 8 8 8r0   