
    $g                     n    d dl mZ d dlmZ d dlmZ d dlmZ  G d de          Z	 G d de          Z
d	S )
    )
HTMLParser)gettext_lazy)Panel)is_processable_html_responsec                   .     e Zd ZdZ fdZd Zd Z xZS )
FormParserzh
    HTML form parser, used to check for invalid configurations of forms that
    take file inputs.
    c                     t                                                       d| _        i | _        g | _        g | _        g | _        d S )NF)super__init__in_formcurrent_formformsform_idsreferenced_file_inputs)self	__class__s    [/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/debug_toolbar/panels/alerts.pyr   zFormParser.__init__   sD    
&(###    c                    t          |          }|dk    rEd| _        |                    d          }|r| j                            |           d|g d| _        d S | j        rY|dk    rS|                    d          dk    r:|                    d          r|                    d          d	k    rd| j        d
<   d S | j        rs|dk    r|                    d          dv s|dk    rP|                    d          r|                    d          d	k    r"| j        d                             |           d S |dk    r1|                    d          r| j                            |           d S d S d S )NformTidF)	file_form
form_attrssubmit_element_attrsinputtypefile r   >   imagesubmitbuttonr   )dictr   getr   appendr   r   )r   tagattrsform_ids       r   handle_starttagzFormParser.handle_starttag   s   U&==DLiiooG .$$W---"#(*! !D L	6w		&!!V++YYv&& ,*/))F*;*;r*A*A-1Dk***L
	6 EIIf$5$59L$L$L(??YYv&& #*/))F*;*;r*A*A45<<UCCCCCG^^		& 1 1^'..u55555 ^^^r   c                 t    |dk    r/| j         r*| j                            | j                   d| _         d S d S d S )Nr   F)r   r   r$   r   )r   r%   s     r   handle_endtagzFormParser.handle_endtag6   s@    &==T\=Jd/000 DLLL ===r   )__name__
__module____qualname____doc__r   r(   r*   __classcell__r   s   @r   r   r   	   s`         
) ) ) ) )6 6 6>! ! ! ! ! ! !r   r   c                        e Zd ZdZ ed           ed           ed          dZ ed          ZdZ fdZe	d	             Z
d
 Zd Zd Z xZS )AlertsPanelz+
    A panel to alert users to issues.
    zlForm with id "{form_id}" contains file input, but does not have the attribute enctype="multipart/form-data".zXForm contains file input, but does not have the attribute enctype="multipart/form-data".zzInput element references form with id "{form_id}", but the form does not have the attribute enctype="multipart/form-data".)form_id_missing_enctypeform_missing_enctypeinput_refs_form_missing_enctypeAlertsz debug_toolbar/panels/alerts.htmlc                 H     t                      j        |i | g | _        d S N)r
   r   alerts)r   argskwargsr   s      r   r   zAlertsPanel.__init__Q   s*    $)&)))r   c                     |                                                      d          x}r+t          |          dk    rdnd}t          |           d| S dS )Nr9      alert r   )	get_statsr#   len)r   r9   
alert_texts      r   nav_subtitlezAlertsPanel.nav_subtitleU   s_    ^^%%))(3336 	$'KK1$4$4(J&kk00J0002r   c                 :    | j                             |           d S r8   )r9   r$   )r   r>   s     r   	add_alertzAlertsPanel.add_alert]   s    5!!!!!r   c                 "   t                      }|                    |           |j        D ]}|d         r|d                             d          dk    rt	          d |d         D                       sc|d                             d          x}r"| j        d                             |	          }n| j        d
         }|                     d|i           d |j        D             }|j        D ]}|                    d          }|r|                    d          dk    rh|                    |          }|rQ|                    d          dk    r8| j        d                             |	          }|                     d|i           | j	        S )z
        Inspects HTML content for a form that includes a file input but does
        not have the encoding type set to multipart/form-data, and warns the
        user if so.
        r   r   enctypemultipart/form-datac              3   H   K   | ]}|                     d           dk    V  dS )formenctyperH   Nr#   ).0elems     r   	<genexpr>zDAlertsPanel.check_invalid_file_form_configuration.<locals>.<genexpr>o   sH         HH]++/DD     r   r   r   r3   )r'   r4   r>   c                 R    i | ]$}|d                               d          |d          %S )r   r   rK   )rL   r   s     r   
<dictcomp>zEAlertsPanel.check_invalid_file_form_configuration.<locals>.<dictcomp>}   s?     
 
 
AED""4(($|*<
 
 
r   r   r   r   r5   )
r   feedr   r#   anymessagesformatrE   r   r9   )	r   html_contentparserr   r'   r>   form_attrs_by_idr&   r   s	            r   %check_invalid_file_form_configurationz1AlertsPanel.check_invalid_file_form_configuration`   s    L!!! L 	1 	1D[!1&**9559NNN   $%; <     O #<044T:::7 B M*CDKK ' L  EE !M*@AE/000
 
IO
 
 
 2 	5 	5Eii''G 5599V,,66-11'::
 5*..";";?T"T"T M*KLSS ' T  E NNGU#3444{r   c                     t          |          sd S |j                            |j                  }|                     |           |                     d| j        i           d S )Nr9   )r   contentdecodecharsetrX   record_statsr9   )r   requestresponserU   s       r   generate_statszAlertsPanel.generate_stats   sg    +H55 	F'..x/?@@22<@@@
 	8T[122222r   )r+   r,   r-   r.   _rS   titletemplater   propertyrC   rE   rX   r`   r/   r0   s   @r   r2   r2   <   s         
 $%1z$
 $
 !"f!
 !
 ,-1 I,
 ,

 
H AhKKE1H       X" " "+ + +Z
3 
3 
3 
3 
3 
3 
3r   r2   N)html.parserr   django.utils.translationr   ra   debug_toolbar.panelsr   debug_toolbar.utilsr   r   r2    r   r   <module>rj      s    " " " " " " 6 6 6 6 6 6 & & & & & & < < < < < <0! 0! 0! 0! 0! 0! 0! 0!f[3 [3 [3 [3 [3% [3 [3 [3 [3 [3r   