o
    QDi8                     @   s   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 d dlmZmZmZ d	ZG d
d de	ZdS )    )Sum)render)csrf)method_decorator)View)login_possibly_requiredpermissions_possibly_required)RequestResponse)
BaseFilterFiltersManagerfilters_from_requestmtfordc                   @   s  e Zd Zg dZdZddddddddddd	d
 dddd
 ddZddiddidZddiddidZdZdZ	dZ
dZeeZedd Zedd Zedd Zdd  Zd!d" Zd#d$ Zd%d& Zd/d'd(Zd)d* Zeeeed+d, Zeeeed-d. ZdS )0RequestsView)   
      d      r   RecentN)labeladditional_query_filterPathzNum. QueriesTimec                 C   s   | j ddS )Nr   )time_taken__gte)filterx r   L/var/www/Datamplify/venv/lib/python3.10/site-packages/silk/views/requests.py<lambda>!   s    zRequestsView.<lambda>zTime on queriesc                 C   s   | j tddjddS )Nqueries__time_taken)db_timer   )db_time__gte)annotater   r   r   r   r   r   r    %   s    )
start_timepathnum_sql_queries
time_takenr"   r   	Ascending
Descending)ASCDESCCardsRows)cardrowr%   r,   r/   request_filtersc                        fdd j  D S )Nc                        g | ]}| j | d  dqS r   )valuer   )order_by.0r   selfr   r   
<listcomp>B        z1RequestsView.options_order_by.<locals>.<listcomp>)r6   keysr9   r   r9   r   options_order_by@      zRequestsView.options_order_byc                    r2   )Nc                    r3   r4   )	order_dirr7   r9   r   r   r;   F   r<   z2RequestsView.options_order_dir.<locals>.<listcomp>)r@   r=   r9   r   r9   r   options_order_dirD   r?   zRequestsView.options_order_dirc                    r2   )Nc                    r3   r4   )
view_styler7   r9   r   r   r;   J   r<   z3RequestsView.options_view_style.<locals>.<listcomp>)rB   r=   r9   r   r9   r   options_view_styleH   r?   zRequestsView.options_view_stylec                 C      t jjdddd S )Nr&   Tflatr	   objectsvalues_listr6   distinctr9   r   r   r   
_get_pathsL      zRequestsView._get_pathsc                 C   s"   t jjdddjddd S )N	view_nameTrE    )rM   )r	   rH   rI   excluder6   rJ   r9   r   r   r   
_get_viewsT   s   zRequestsView._get_viewsc                 C   rD   )Nstatus_codeTrE   )r
   rH   rI   r6   rJ   r9   r   r   r   _get_status_codes^   rL   zRequestsView._get_status_codesc                 C   rD   )NmethodTrE   rG   r9   r   r   r   _get_methodsf   rL   zRequestsView._get_methodsc           	      C   s   |sg }|s	| j }tj }|s| j}|s| j}|| j vr%td| | j| }|d d ur6|d |}|d	|dkr@dnd|}|rM|j
|d}|D ]}||}|
|}qO|d | S )NzUnknown order_by: "%s"r   z{}{}r,   -rN   )r&   )default_showr	   rH   alldefault_order_bydefault_order_dirr6   r=   RuntimeErrorformatr   contribute_to_query_set)	r:   showr6   r@   r&   filters	query_setobfr   r   r   _get_objectsn   s*   


zRequestsView._get_objectsc           	      C   s   | j | }|d| j}|d| j}|d| j}|d| j}|r*t|}|j	dd }|||||| j
| j| j| j|  |  |  |  |d}|t| |r[||d< | j||||dd | D d	|d
< |S )Nr]   r6   r@   rB   r&   )r]   r6   r@   rB   requestoptions_showr>   rA   rC   options_pathsoptions_status_codesoptions_methods
view_namesr^   c                 S   s   g | ]	\}}t |qS r   )r   	from_dict)r8   _r   r   r   r   r;          z0RequestsView._create_context.<locals>.<listcomp>)r^   results)filters_managergetcopypoprV   rX   rY   default_view_styleintGETr]   r>   rA   rC   rK   rR   rT   rP   updater   rb   items)	r:   rc   raw_filtersr]   r6   r@   rB   r&   contextr   r   r   _create_context   s<   
zRequestsView._create_contextc                 C   sJ   |j ri | j|dd |j  D }| j|| t|d| |S )Nc                 S      i | ]\}}|d v r||qS )r]   r6   r@   rB   r   r8   kvr   r   r   
<dictcomp>       z$RequestsView.get.<locals>.<dictcomp>silk/requests.html)rs   rm   rn   ru   saver   rx   )r:   rc   r^   r   r   r   rn      s   
zRequestsView.getc                 C   sX   | j |}i dd | D dd t| D }| j || t|d| |S )Nc                 S   ry   rz   r   r{   r   r   r   r~      r   z%RequestsView.post.<locals>.<dictcomp>c                 S   s   i | ]	\}}||  qS r   )as_dict)r8   identra   r   r   r   r~      rk   r   )rm   rn   ru   r   r   r   rx   )r:   rc   previous_sessionr^   r   r   r   post   s   zRequestsView.post)NNNNN)__name__
__module____qualname__r]   rV   r6   r@   rB   rX   rY   rq   session_key_request_filtersr   rm   propertyr>   rA   rC   rK   rP   rR   rT   rb   rx   r   r   r   rn   r   r   r   r   r   r      sh    





!r   N)django.db.modelsr   django.shortcutsr   "django.template.context_processorsr   django.utils.decoratorsr   django.views.genericr   	silk.authr   r   silk.modelsr	   r
   silk.request_filtersr   r   r   
__author__r   r   r   r   r   <module>   s    