
    7 f                      :   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 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  ej!        ek    rej!        e_"        ee_!        ed             Z#e#e_$         G d de          Z%dS )    )contextmanagernormpath)pformatsaferepr)http)signing)QuerySetRawQuerySet)RequestContextTemplate)template_rendered)instrumented_test_render)path)gettext_lazy)Panel)SQLQueryTriggered	allow_sql)viewsc              #     K   | j         t          d          || _         |j        j        | j        z   }i | _        i }|D ]B}|j         d|j         } || j                  }|| j        |<   |	                    |           C|| j
        | j        <   	 d V  d | _         i | j
        | j        <   d S # d | _         i | j
        | j        <   w xY w)Nz&Context is already bound to a template.)templateRuntimeErrorenginetemplate_context_processors_processorscontext_processors
__module____name__requestupdatedicts_processors_index)selfr   
processorsupdates	processornamecontexts          Z/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/panels/templates/panel.py_request_context_bind_templater+   !   s      } CDDDDM<t?OOJ DG    	&==);==)DL))(/%w)0DJt%&0-/
4)*** -/
4)*////s   B. .Cc                        e Zd ZdZ fdZd Z ed          Zed             Z	ed             Z
dZed             Zd	 Zd
 Zd Z xZS )TemplatesPanelzP
    A panel that lists all templates used during processing of a response.
    c                 V     t                      j        |i | g | _        g | _        d S N)super__init__	templatespformat_layers)r$   argskwargs	__class__s      r*   r1   zTemplatesPanel.__init__B   s6    $)&))) !    c                 @   |d         |d         }}t          |j        t                    oP|j                            d          p6|j                            t	          | j        j        d                             }|rd S g }|j        D ]}t          |d          r|rd }| j	        D ]\  }	}
|	|k    r|
} n|i }|
                                D ]U\  }}t          |t          j                  rd||<   &|dk    rt          |t                    rd||<   G|d	k    rt          |t                    rd
||<   ht          |t          t          f          rEd                    |j        j                                        |j        j        j                  ||<   t/          j        d          }	 t3          |           |||<   n5# t4          $ r d||<   Y n$t6          $ r d||<   Y nt8          $ r d||<   Y nw xY wt/          j        |           ># t/          j        |           w xY wt=          |          }| j	                            ||f           |                    |           ||d<   tA          |dd           |d<   | j!                            |           d S )Nr   r)   zdebug_toolbar/SKIP_TEMPLATE_PREFIXESitemsz<<request>>sql_queriesz<<sql_queries>>	LANGUAGESz<<languages>>z<<{} of {}>>Fz<<triggers database query>>z<<Unicode encode error>>z<<unhandled exception>>r   )"
isinstancer(   str
startswithtupletoolbarconfigr"   hasattrr3   r:   r   HttpRequestlistr
   r   formatr6   r   lowermodel_metalabelr   setr   r   UnicodeEncodeError	Exceptionresetr   appendgetattrr2   )r$   senderr5   r   r)   is_debug_toolbar_templatecontext_listcontext_layer
pformatted
key_values_pformatted
temp_layerkeyvaluetokens                  r*   _store_template_infoz#TemplatesPanel._store_template_infoI   s   ":.y0A' %/x}c$B$B %
M$$%566 }''dl)*BCDD  	" % 	F$] 0	0 0	0M}g.. /0= /0!
/3/B  +J!]22%0
 3 %!#J&3&9&9&;&; "7 "7
U &eT-=>> 7.;JsOO !M11j6M6M1.?JsOO !K//Jue4L4L/.=JsOO (+/FGG 7.<.C.C % 8 > > @ @ % 1 7/ /JsOO
 %.M%$8$8E7 ( 38
3 $5 P P P2O
3#5 M M M2L
3#, L L L2K
3L
 !* 6 6 6 6	 6 6 6 6!(!4!4J'..z/JKKK##J///(y'.w8Ld'S'S#$f%%%%%sB   0G?HG7HG7$H&G74H6G77HH&	Templatesc                 R    t          | j                  }t          d          d|iz  S )Nz&Templates (%(num_templates)s rendered)num_templates)lenr2   _)r$   r_   s     r*   titlezTemplatesPanel.title   s1    DN++9::]>
 
 	
r7   c                 D    | j         r| j         d         d         j        S dS )Nr   r    )r2   r(   r$   s    r*   nav_subtitlezTemplatesPanel.nav_subtitle   s&    > 	6>!$Z055rr7   z#debug_toolbar/panels/templates.htmlc                 <    t          dt          j        d          gS )Nztemplate_source/template_source)r(   )r   r   rh   )clss    r*   get_urlszTemplatesPanel.get_urls   s    ')>EVWWWXXr7   c                 8    t          j        | j                   d S r/   )r   connectr\   re   s    r*   enable_instrumentationz%TemplatesPanel.enable_instrumentation   s    !$";<<<<<r7   c                 8    t          j        | j                   d S r/   )r   
disconnectr\   re   s    r*   disable_instrumentationz&TemplatesPanel.disable_instrumentation   s    $T%>?????r7   c                    g }| j         D ]}i }|d         }t          |d          rH|j        rA|j        j        r5|j        j        |_        t          j        |j        j                  |_        nt          d          |_        d|_        ||d<   | j	        j
        d         r.|                    dg           }d                    |          |d<   |                    |           | j         rF| j         d         d	         }| j         d         d         }t          |d
d           p|j        }	|	j        }
nd }g }
|                     |d |
D             |d           d S )Nr   originz	No originrd   SHOW_TEMPLATE_CONTEXTr)   
r   r   r   c                 ,    g | ]}t          |          S  r   ).0xs     r*   
<listcomp>z1TemplatesPanel.generate_stats.<locals>.<listcomp>   s    !E!E!E!(1++!E!E!Er7   )r2   template_dirsr   )r2   rC   rr   r(   origin_namer	   dumpsorigin_hashra   rA   rB   getjoinrO   rP   backenddirsrecord_stats)r$   r    responsetemplate_contexttemplate_datainfor   rS   r   engine_backendrz   s              r*   generate_statszTemplatesPanel.generate_stats   s   !^ 	* 	*MD$Z0Hx** *x *8?CW *'/';$'.}X_5I'J'J$$'(~~$')$'D|"#:; :,00B??"&))L"9"9Y##D)))) > 		!%!23G!H~a(4H %Xx>>R(BRN*/MM!%M-!E!E}!E!E!E&8 	
 	
 	
 	
 	
r7   )r   r   __qualname____doc__r1   r\   ra   	nav_titlepropertyrb   rf   r   classmethodrj   rm   rp   r   __classcell__)r6   s   @r*   r-   r-   =   s         ! ! ! ! !B& B& B&L +I
 
 X
   X
 5HY Y [Y= = =@ @ @%
 %
 %
 %
 %
 %
 %
r7   r-   N)&
contextlibr   os.pathr   pprintr   r   djangor   django.corer	   django.db.models.queryr
   r   django.templater   r   django.test.signalsr   django.test.utilsr   django.urlsr   django.utils.translationr   ra   debug_toolbar.panelsr   !debug_toolbar.panels.sql.trackingr   r   debug_toolbar.panels.templatesr   _renderoriginal_renderr+   bind_templater-   rv   r7   r*   <module>r      s   % % % % % %       $ $ $ $ $ $ $ $             8 8 8 8 8 8 8 8 4 4 4 4 4 4 4 4 1 1 1 1 1 1 6 6 6 6 6 6       6 6 6 6 6 6 & & & & & & J J J J J J J J 0 0 0 0 0 0 ///'/H/H 0 0 00  > R
 R
 R
 R
 R
U R
 R
 R
 R
 R
r7   