a
    ތxd                     @   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d	lmZ dd
lmZ G dd dZdZe ZdS )zA
The main DebugToolbar class that loads and renders the Toolbar.
    N)OrderedDict)apps)ImproperlyConfigured)TemplateSyntaxError)render_to_string)pathimport_string)settingsc                   @   s~   e Zd Zdd Zedd Zedd Zdd Zd	d
 Zdd Z	e
 Zdd Zedd ZdZedd ZdZedd ZdS )DebugToolbarc                 C   s   || _ t  | _g }t|  D ]$}|| |}|| |jr$|j	}q$|| _	t
 | _|rr| }|| j|j< qXi | _i | _d | _d S N)requestdt_settingsZ
get_configcopyconfigreversedget_panel_classesappendenabledprocess_requestr   _panelspoppanel_idstatsZserver_timing_statsstore_id)selfr   Zget_responsepanelspanel_classpanel r   M/var/www/html/Ranjet/env/lib/python3.9/site-packages/debug_toolbar/toolbar.py__init__   s     

zDebugToolbar.__init__c                 C   s   t | j S )z5
        Get a list of all available panels.
        )listr   valuesr   r   r   r    r   '   s    zDebugToolbar.panelsc                 C   s   dd | j  D S )zG
        Get a list of panels enabled for the current request.
        c                 S   s   g | ]}|j r|qS r   )r   ).0r   r   r   r    
<listcomp>3       z/DebugToolbar.enabled_panels.<locals>.<listcomp>)r   r#   r$   r   r   r    enabled_panels.   s    zDebugToolbar.enabled_panelsc                 C   s
   | j | S )zV
        Get the panel with the given id, which is the class name by default.
        )r   )r   r   r   r   r    get_panel_by_id5   s    zDebugToolbar.get_panel_by_idc                 C   sR   |   s|   zd| i}td|W S  tyL   tdsFtdn Y n0 dS )zA
        Renders the overall Toolbar with panels inside.
        Ztoolbarzdebug_toolbar/base.htmlzdjango.contrib.staticfileszThe debug toolbar requires the staticfiles contrib app. Add 'django.contrib.staticfiles' to INSTALLED_APPS and define STATIC_URL in your settings.N)should_render_panelsstorer   r   r   is_installedr   )r   contextr   r   r    render_toolbar=   s    
zDebugToolbar.render_toolbarc                 C   s"   | j d }|d u r| jjd }|S )NZRENDER_PANELSzwsgi.multiprocess)r   r   ZMETA)r   Zrender_panelsr   r   r    r*   P   s    
z!DebugToolbar.should_render_panelsc                 C   sP   | j r
d S t j| _ | | j| j < t| jd t| jD ]}| jjdd q8d S )NZRESULTS_CACHE_SIZEF)last)	r   uuiduuid4hex_storeranger   lenpopitem)r   _r   r   r    r+   Z   s    zDebugToolbar.storec                 C   s   | j |S r   )r3   get)clsr   r   r   r    fetchc   s    zDebugToolbar.fetchNc                 C   s(   | j d u r"dd t D }|| _ | j S )Nc                 S   s   g | ]}t |qS r   r   )r%   Z
panel_pathr   r   r    r&   p   s   z2DebugToolbar.get_panel_classes.<locals>.<listcomp>)_panel_classesr   Z
get_panels)r9   Zpanel_classesr   r   r    r   l   s    
zDebugToolbar.get_panel_classesc                 C   sN   | j d u rHddlm} td|jddg}|  D ]}|| 7 }q0|| _ | j S )N   )viewszrender_panel/render_panel)name)_urlpatterns r=   r   r>   r   get_urls)r9   r=   urlpatternsr   r   r   r    rB   x   s    
zDebugToolbar.get_urls)__name__
__module____qualname__r!   propertyr   r(   r)   r.   r*   r   r3   r+   classmethodr:   r;   r   r@   rB   r   r   r   r    r      s$   

	

	r   Zdjdt)__doc__r0   collectionsr   Zdjango.appsr   Zdjango.core.exceptionsr   Zdjango.templater   Zdjango.template.loaderr   Zdjango.urlsr   Zdjango.utils.module_loadingr	   Zdebug_toolbarr
   r   r   Zapp_namerB   rC   r   r   r   r    <module>   s   w