
    f#                     t   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 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d      rd dl#m$Z$  e$        ejJ                  ek7  rejJ                  e_&        ee_%        ed        Z'e'e_(         G d de      Z)y)    )contextmanager)	find_spec)normpath)pformatsaferepr)http)signing)QuerySetRawQuerySet)RequestContextTemplate)template_rendered)instrumented_test_render)path)gettext_lazy)Panel)SQLQueryTriggered	allow_sql)viewsjinja2)patch_jinja_renderc              #     K   | j                   t        d      || _         |j                  j                  | j                  z   }i | _        i }|D ]O  }|j                   d|j                   } || j                        }|| j
                  |<   |j                  |       Q || j                  | j                  <   	 d  d | _         i | j                  | j                  <   y # d | _         i | j                  | j                  <   w xY w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          _/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/debug_toolbar/panels/templates/panel.py_request_context_bind_templater-   &   s     }} CDDDM<<t?O?OOJ DG  	&&'q););(<=DLL)(/%w	 
 *1DJJt%%&0-/

4))* -/

4))*s   B8D;C  ?!D "DD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d Z xZS )TemplatesPanelzP
    A panel that lists all templates used during processing of a response.
    c                 @    t        |   |i | g | _        g | _        y N)super__init__	templatespformat_layers)r&   argskwargs	__class__s      r,   r3   zTemplatesPanel.__init__G   s&    $)&) !    c                    |d   |d   }}t        |j                  t              xrX |j                  j                  d      xs; |j                  j                  t	        | j
                  j                  d               }|ry |j                  D cg c]  }t        |d      r|r| c}|d<   t        |dd       |d<   | j                  j                  |       y c c}w )Nr   r+   zdebug_toolbar/SKIP_TEMPLATE_PREFIXESitemsr   )
isinstancer*   str
startswithtupletoolbarconfigr$   hasattrgetattrr4   append)r&   senderr7   r   r+   is_debug_toolbar_templatecontext_layers          r,   _store_template_infoz#TemplatesPanel._store_template_infoN   s    ":.y0A' %/x}}c$B %
MM$$%56 }}''dll))*BCD 	" % ")
}g.= 
y
 (/w8Ld'S#$f%
s   C	Templatesc                 L    t        | j                        }t        d      d|iz  S )Nz&Templates (%(num_templates)s rendered)num_templates)lenr4   _)r&   rL   s     r,   titlezTemplatesPanel.titleg   s-    DNN+9:]>
 
 	
r9   c                 T    | j                   r| j                   d   d   j                  S y)Nr   r    )r4   r*   r&   s    r,   nav_subtitlezTemplatesPanel.nav_subtitlen   s&    >>>>!$Z0555r9   z#debug_toolbar/panels/templates.htmlc                 <    t        dt        j                  d      gS )Nztemplate_source/template_source)r*   )r   r   rU   )clss    r,   get_urlszTemplatesPanel.get_urlsv   s    ')>)>EVWXXr9   c                 B    t        j                  | j                         y r1   )r   connectrI   rR   s    r,   enable_instrumentationz%TemplatesPanel.enable_instrumentationz   s    !!$";";<r9   c                 B    t        j                  | j                         y r1   )r   
disconnectrI   rR   s    r,   disable_instrumentationz&TemplatesPanel.disable_instrumentation}   s    $$T%>%>?r9   c                    g }|D ]  }d }| j                   D ]  \  }}||k(  s|} n |Si }|j                         D ]  \  }}	t        |	d      rt        |	      ||<   "t	        |	t
        j                        rd||<   B|dk(  rt	        |	t              rd||<   ]|dk(  rt	        |	t              rd||<   xt	        |	t        t        f      rMd|	j                  j                  j                          d|	j                  j                  j                    d	||<   t#        j$                  d
      }
	 t'        |	       |	||<   t#        j.                  |
        t1        |      }| j                   j3                  ||f       |j3                  |        |S # t(        $ r d||<   Y ft*        $ r d||<   Y ut,        $ r d||<   Y w xY w# t#        j.                  |
       w xY w)N_wrappedz<<request>>sql_queriesz<<sql_queries>>	LANGUAGESz<<languages>>z<<z of z>>Fz<<triggers database query>>z<<Unicode encode error>>z<<unhandled exception>>)r5   r<   rC   reprr=   r   HttpRequestlistr@   r
   r   r8   r!   lowermodel_metalabelr   setr   r   UnicodeEncodeError	Exceptionresetr   rE   )r&   context_layerscontext_listrH   
pformatted
key_values_pformatted
temp_layerkeyvaluetokens              r,   process_context_listz#TemplatesPanel.process_context_list   s   + 3	,MJ+/+>+> '
K.!,J
 !
"/"5"5"7 &3JCuj1 +/u+
3 $E4+;+;<*7
3 -*UD2I*;
3 +
5%0H*9
3 $EHk+BC !9!9!?!?!A B$u{{GXGXG^G^F__ab #3 !*e 43$UO /4JsO%OOE2M&3N %Z0
##**M:+FG
+g3	,j   1 L.KJsO1 I.HJsO( H.GJsOH
 &OOE2sB   .F9GG"G$G1G3G GGGGc           	      P   g }| j                   D ]  }i }|d   }t        |d      rl|j                  r`|j                  j                  rJ|j                  j                  |_        t        j                  |j                  j                        |_        nt        d      |_        d|_        ||d<   | j                  j                  d   r?d|vr$| j                  |j                  dg             |d<   dj                  |d         |d<   |j                  |       
 | j                   rL| j                   d	   d
   }| j                   d	   d   }t        |dd       xs |j                   }|j"                  }	nd }g }	| j%                  ||	D 
cg c]  }
t'        |
       c}
|d       y c c}
w )Nr   originz	No originrQ   SHOW_TEMPLATE_CONTEXTrn   r+   
r   r   r   )r4   template_dirsr   )r4   rC   rx   r*   origin_namer	   dumpsorigin_hashrN   rA   rB   rv   getjoinrE   rD   backenddirsrecord_statsr   )r&   r"   responsetemplate_contexttemplate_datainfor   r   engine_backendr{   xs              r,   generate_statszTemplatesPanel.generate_stats   s   !^^ 	*MD$Z0Hx*x8??CWCW'/';';$'.}}X__5I5I'J$'(~$')$'D||""#:;!6484M4M%)))R85M.1 #'))M.,I"JY##D)%	** >>!%!23G!H~~a(4H %Xx>R(BRBRN*//M!%M-7D!E!(1+!E&8	
 "Fs   F#
)r!   r    __qualname____doc__r3   rI   rN   	nav_titlepropertyrO   rS   r   classmethodrW   rZ   r]   rv   r   __classcell__)r8   s   @r,   r/   r/   B   st    !&. +I
 
  
 5HY Y=@7r(
r9   r/   N)*
contextlibr   importlib.utilr   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   rN   debug_toolbar.panelsr   !debug_toolbar.panels.sql.trackingr   r   debug_toolbar.panels.templatesr   %debug_toolbar.panels.templates.jinja2r   _renderoriginal_renderr-   bind_templater/    r9   r,   <module>r      s    % $  $   8 4 1 6  6 & J 0XH //'//H/H 0 00  > _
U _
r9   