
    7 f                         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 d dlmZ d Zee	ed                                     Zee	ed	                                     Zee	ed
                                     ZdS )    )HttpResponseBadRequestJsonResponse)render_to_string)csrf_exempt)render_with_toolbar_languagerequire_show_toolbar)SignedDataForm)SQLSelectFormc                     | j         dk    r| j        n| j        }t          |          }|                                r|                                S dS )z2Unpack a signed data form, if invalid returns NoneGETN)methodr   POSTr	   is_validverified_data)requestdatasigned_forms      T/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/panels/sql/views.pyget_signed_datar   
   sS    !.E117;;w|D &&K +((***4    c                 0   t          |           }|st          d          S t          |          }|                                r|j        d         }|j        d         }|j        5 }|                    ||           d |j        D             }|                                }ddd           n# 1 swxY w Y   ||	                                |j        d         ||j        d         d}t          d	|          }	t          d
|	i          S t          d          S )z.Returns the output of the SQL SELECT statementInvalid signatureraw_sqlparamsc                     g | ]
}|d          S r    .0ds     r   
<listcomp>zsql_select.<locals>.<listcomp>"       888qt888r   Ndurationaliasresultsqlr#   headersr$   z$debug_toolbar/panels/sql_select.htmlcontentForm errors)r   r   r
   r   cleaned_datacursorexecutedescriptionfetchallreformat_sqlr   r   )
r   r   formr'   r   r,   r(   r&   contextr)   s
             r   
sql_selectr3      s^   
 $G,,M ;%&9:::''D}} 2	*"8,[ 	'FNN3'''88V%7888G__&&F	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' $$&&)*5&w/
 
 ##I7SSY0111!-000s   %<B--B14B1c                    t          |           }|st          d          S t          |          }|                                r|j        d         }|j        d         }|j        j        }|j        5 }|dk    r|                    d| |           n9|dk    r|                    d| |           n|                    d| |           d	 |j	        D             }|
                                }d
d
d
           n# 1 swxY w Y   ||                                |j        d         ||j        d         d}	t          d|	          }
t          d|
i          S t          d          S )z8Returns the output of the SQL EXPLAIN on the given queryr   r   r   sqlitezEXPLAIN QUERY PLAN 
postgresqlzEXPLAIN ANALYZE zEXPLAIN c                     g | ]
}|d          S r   r   r   s     r   r!   zsql_explain.<locals>.<listcomp>I   r"   r   Nr#   r$   r%   z%debug_toolbar/panels/sql_explain.htmlr)   r*   )r   r   r
   r   r+   
connectionvendorr,   r-   r.   r/   r0   r   r   )r   r   r1   r'   r   r9   r,   r(   r&   r2   r)   s              r   sql_explainr:   1   s   
 $G,,M ;%&9:::''D}} 2	*"8,'[ 	'F!! :S::FCCCC<''7#77@@@@/#//88888V%7888G__&&F	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' $$&&)*5&w/
 
 ##JGTTY0111!-000s   2A?C==DDc                    t          |           }|st          d          S t          |          }|                                r|j        d         }|j        d         }d}d}d}|j        5 }	 |                    d           |                    ||           |                    d           |                    d           d |j        D             }|                                }n# t          $ r d	}Y nw xY wddd           n# 1 swxY w Y   |||
                                |j        d
         ||j        d         d}	t          d|	          }
t          d|
i          S t          d          S )zJReturns the output of running the SQL and getting the profiling statisticsr   r   r   NzSET PROFILING=1zSET PROFILING=0aV  
                    SELECT *
                    FROM information_schema.profiling
                    WHERE query_id = (
                        SELECT query_id
                        FROM information_schema.profiling
                        ORDER BY query_id DESC
                        LIMIT 1
                    )
                    c                     g | ]
}|d          S r   r   r   s     r   r!   zsql_profile.<locals>.<listcomp>{   s    <<<A1Q4<<<r   zDProfiling is either not available or not supported by your database.r#   r$   )r&   result_errorr'   r#   r(   r$   z%debug_toolbar/panels/sql_profile.htmlr)   r*   )r   r   r
   r   r+   r,   r-   r.   r/   	Exceptionr0   r   r   )r   r   r1   r'   r   r&   r(   r=   r,   r2   r)   s              r   sql_profiler?   X   s   
 $G,,M ;%&9:::''D}} *2	*"8,[ 	F0111sF+++0111 	   =<);<<<**     +	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 ($$&&)*5&w/
 
 ##JGTTY0111!-000s7   ,D.A:C)(D)C85D7C88DDDN)django.httpr   r   django.template.loaderr   django.views.decorators.csrfr   debug_toolbar.decoratorsr   r   debug_toolbar.formsr	   debug_toolbar.panels.sql.formsr
   r   r3   r:   r?   r   r   r   <module>rF      s*   < < < < < < < < 3 3 3 3 3 3 4 4 4 4 4 4 W W W W W W W W . . . . . . 8 8 8 8 8 8   1 1   16 !1 !1   !1H 21 21   21 21 21r   