o
    QDi                     @   s   d dl mZmZ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mZmZ G d	d
 d
eZdS )    )AvgCountMaxSum)render)csrf)method_decorator)View)models)login_possibly_requiredpermissions_possibly_required)
BaseFilterFiltersManagerfilters_from_requestc                   @   s   e Zd ZdZeeZdd Zdd Zdd Zdd	 Z	d
d Z
dd Zdd Zeeeedd Zeeeedd ZdS )SummaryViewsummary_filtersc                 C   .   t jjj| jtddjtdd}|d S )Nqueries)num_queriesr   numr   )r
   Requestobjectsfilterannotater   	aggregater   )selffiltersqueries__aggregate r   K/var/www/Datamplify/venv/lib/python3.10/site-packages/silk/views/summary.py_avg_num_queries      &zSummaryView._avg_num_queriesc                 C   r   )Nqueries__time_taken
time_spentr%   r   r   r
   r   r   r   r   r   r   r   r   r   taken__aggregater   r   r    _avg_time_spent_on_queries   r"   z&SummaryView._avg_time_spent_on_queriesc                 C   r   )N
time_takenr$   r%   r   r   r&   r'   r   r   r    _avg_overall_time   r"   zSummaryView._avg_overall_timec                 C   s   t jjj| djtddjdddd d }g }|D ]\}}t jjj|d|ijddd	d
 }|| qt	|dd ddS )N	view_namer*   )maxF)max__isnullz-max   )time_taken__isnullz-time_takenr   c                 S      | j S N)r*   itemr   r   r    <lambda>#       z4SummaryView._longest_query_by_view.<locals>.<lambda>Tkeyreverse)
r
   r   r   r   values_listr   r   order_byappendsorted)r   r   r:   requestsr,   _requestr   r   r    _longest_query_by_view   s   6&z"SummaryView._longest_query_by_viewc                 C   s   t jjj| djtddjdddd d }g }|D ]"\}}t jjj|d|ijtddjdd	dd }|| qt	|d
d ddS )Nr,   r#   tr   )t__gte-tr/   F)	t__isnullc                 S   r1   r2   rB   r3   r   r   r    r5   +   r6   z7SummaryView._time_spent_in_db_by_view.<locals>.<lambda>Tr7   )
r
   r   r   r   r:   r   r   r;   r<   r=   )r   r   r:   r>   viewr?   rr   r   r    _time_spent_in_db_by_view%   s   62z%SummaryView._time_spent_in_db_by_viewc              	   C   s   t jjj| djtdddd d }dd |d d D }g }|D ]'}zt jjj|d|ijtdddd	 }|| W q& t	yM   Y q&w t
|d
d ddS )Nr,   r   rB   rE   r/   c                 S   s   g | ]}|d  qS )r   r   ).0rH   r   r   r    
<listcomp>/   s    z4SummaryView._num_queries_by_view.<locals>.<listcomp>   r   c                 S   r1   r2   rB   r3   r   r   r    r5   7   r6   z2SummaryView._num_queries_by_view.<locals>.<lambda>Tr7   )r
   r   r   r   r:   r   r   r;   r<   
IndexErrorr=   )r   r   querysetviewsr>   rG   rH   r   r   r    _num_queries_by_view-   s   .*z SummaryView._num_queries_by_viewc                 C   s   | j |}dd | D }| |}|tjjj|  tj	jj|  || 
|| || || || ||d
}|t| |S )Nc                 S   s   g | ]	\}}t |qS r   )r   	from_dict)rJ   r?   filter_dr   r   r    rK   ;       z/SummaryView._create_context.<locals>.<listcomp>)
r@   num_requestsnum_profilesavg_num_queriesavg_time_spent_on_queriesavg_overall_timelongest_queries_by_viewmost_time_spent_in_dbmost_queriesr   )filters_managergetitemsr!   r
   r   r   r   countProfiler)   r+   rA   rI   rP   updater   )r   r@   raw_filtersr   rX   cr   r   r    _create_context9   s    
zSummaryView._create_contextc                 C   s   |  |}t|d|S )Nsilk/summary.html)rd   r   )r   r@   rc   r   r   r    r]   L   s   
zSummaryView.getc                 C   s6   dd t | D }| j|| t|d| |S )Nc                 S   s   i | ]	\}}||  qS r   )as_dict)rJ   identfr   r   r    
<dictcomp>U   rS   z$SummaryView.post.<locals>.<dictcomp>re   )r   r^   r\   saver   rd   )r   r@   r   r   r   r    postR   s   zSummaryView.postN)__name__
__module____qualname__filters_keyr   r\   r!   r)   r+   rA   rI   rP   rd   r   r   r   r]   rk   r   r   r   r    r      s     r   N)django.db.modelsr   r   r   r   django.shortcutsr   "django.template.context_processorsr   django.utils.decoratorsr   django.views.genericr	   silkr
   	silk.authr   r   silk.request_filtersr   r   r   r   r   r   r   r    <module>   s    