o
    ›¨Êh  ã                   @   sD   d dl mZ d dlmZ d dlmZ d dlmZ G dd„ deƒZ	dS )é    )Ú
DebugPanel)Úrender_to_string)Úgettext_lazy)Úconnectionsc                       sP   e Zd ZdZdZdZ‡ fdd„Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Z‡  ZS )ÚHaystackDebugPanelzj
    Panel that displays information about the Haystack queries run while
    processing the request.
    ÚHaystackTc                    s>   t ƒ j|i |¤Ž dd„ tj ¡ D ƒ| _d| _g | _i | _d S )Nc                 S   s   i | ]
}|t t| jƒ“qS © )Úlenr   Úqueries)Ú.0Úaliasr   r   úA/var/www/html/env/lib/python3.10/site-packages/haystack/panels.pyÚ
<dictcomp>   s    ÿÿz/HaystackDebugPanel.__init__.<locals>.<dictcomp>r   )	ÚsuperÚ__init__r   Úconnections_infoÚkeysÚ_offsetÚ_search_timeÚ_queriesÚ	_backends)ÚselfÚargsÚkwargs©Ú	__class__r   r   r      s   þ
zHaystackDebugPanel.__init__c                 C   ó   t dƒS )Nr   ©Ú_©r   r   r   r   Ú	nav_title   ó   zHaystackDebugPanel.nav_titlec                    sÂ   g | _ i | _tj ¡ D ],‰ tˆ  j| jˆ  d … }tdd„ |D ƒƒt|ƒdœ| jˆ < | j  	‡ fdd„|D ƒ¡ q| j j
dd„ d� td	d„ | j ¡ D ƒƒ| _t| j ƒ}d
||dkr[dp\d| jf S )Nc                 s   s   � | ]	}t |d  ƒV  qdS )ÚtimeN)Úfloat©r   Úqr   r   r   Ú	<genexpr>%   s   € z2HaystackDebugPanel.nav_subtitle.<locals>.<genexpr>)Ú
time_spentr
   c                    s   g | ]}ˆ |f‘qS r   r   r$   ©r   r   r   Ú
<listcomp>(   ó    z3HaystackDebugPanel.nav_subtitle.<locals>.<listcomp>c                 S   s   | d d S )Né   Ústartr   ©Úxr   r   r   Ú<lambda>*   s    z1HaystackDebugPanel.nav_subtitle.<locals>.<lambda>©Úkeyc                 S   s   g | ]}|d  ‘qS )r'   r   )r   Údr   r   r   r)   +   r*   z%d %s in %.2fmsr+   Úqueryr
   )r   r   r   r   r   r
   r   Úsumr	   ÚextendÚsortÚvaluesr   )r   Úsearch_queriesÚnum_queriesr   r(   r   Únav_subtitle   s    þ
ýzHaystackDebugPanel.nav_subtitlec                 C   r   )NzSearch Queriesr   r   r   r   r   Útitle3   r!   zHaystackDebugPanel.titlec                 C   s   dS )NÚ r   r   r   r   r   Úurl6   s   zHaystackDebugPanel.urlc              	   C   sì   d}| j D ]M\}}||d< |d |d< | d¡r+|d  d¡r+t|d d ƒ|d d< zt|d ƒ| j d |d	< W n tyG   d|d	< Y nw ||d
< ||d	 7 }q| j ¡ }| t	| j
 ¡ dd„ d�dd„ | j D ƒ| jdœ¡ td|ƒS )Nr   r   Úquery_stringr3   Úadditional_kwargsÚresult_classr"   éd   Úwidth_ratioÚstart_offsetc                 S   s   | d d  S )Nr+   r'   r   r-   r   r   r   r/   R   s    z,HaystackDebugPanel.content.<locals>.<lambda>r0   c                 S   s   g | ]\}}|‘qS r   r   )r   Úar%   r   r   r   r)   T   r*   z.HaystackDebugPanel.content.<locals>.<listcomp>)Úbackendsr
   Úsql_timezpanels/haystack.html)r   ÚgetÚstrr#   r   ÚZeroDivisionErrorÚcontextÚcopyÚupdateÚsortedr   Úitemsr   )r   Úwidth_ratio_tallyr   r3   rJ   r   r   r   Úcontent9   s4   

ÿÿ
ÿûÿ

zHaystackDebugPanel.content)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚhas_contentr   r    r:   r;   r=   rP   Ú__classcell__r   r   r   r   r      s    
r   N)
Údebug_toolbar.panelsr   Údjango.template.loaderr   Údjango.utils.translationr   r   Úhaystackr   r   r   r   r   r   Ú<module>   s
    