o
    QDi                     @   s   d dl 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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 )    )CountSum)render)csrf)method_decorator)View)login_possibly_requiredpermissions_possibly_required)ProfileRequest)
BaseFilterFiltersManagerfilters_from_requestc                       s   e Zd Zg dZdZg dZdZdZeeZ	 fddZ
dd	 ZdddZdddZdddZdd Zeeeedd Zeeeedd Z  ZS )ProfilingView)   
      d      r   )RecentNameFunction NameNum. QueriesTimeTime on queriesr   session_key_profile_filtersc                    s   t  jdi | d S )N )super__init__)selfkwargs	__class__r   M/var/www/Datamplify/venv/lib/python3.10/site-packages/silk/views/profiling.pyr      s   zProfilingView.__init__c                    sf   |r
t jj|d}nt j } fdd|  D }z|d W n	 ty-   Y nw dg| S )Nrequestc                    s   g | ]}|  qS r   r   ).0xfieldr   r#   
<listcomp>!   s    z6ProfilingView._get_distinct_values.<locals>.<listcomp> )r
   objectsfilterallvaluesdistinctremove
ValueError)r   r)   silk_request	query_setfunction_namesr   r(   r#   _get_distinct_values   s   

z"ProfilingView._get_distinct_valuesNc                 C      |  d|S )N	func_namer6   r   r3   r   r   r#   _get_function_names)      z!ProfilingView._get_function_namesc                 C   r7   )Nnamer9   r:   r   r   r#   
_get_names,   r<   zProfilingView._get_namesc           
      C   s*  |sg }|s	| j }tj}|r|j|d}n| }|s| j}|dkr(|d}nF|dkr2|d}n<|dkr<|d}n2|dkrL|jtd	d
d}n"|dkrV|d}n|dkrf|jt	ddd}n|rnt
d| |rv|j|d}|r~|j|d}|D ]}	|	|}||	}qt|d | S )Nr$   r   z-start_timer   z-namer   z
-func_namer   queries)num_queriesz-num_queriesr   z-time_takenr   queries__time_taken)db_timez-db_timezUnknown order_by: "%s")r8   )r=   )default_showr
   r,   r-   r.   defualt_order_byorder_byannotater   r   RuntimeErrorcontribute_to_query_setlist)
r   showrE   r=   r8   r3   filtersmanagerr4   fr   r   r#   _get_objects/   s@   
zProfilingView._get_objectsc              
   O   s   | d}|rtjj |d}nd }|j d| j}|j d| j}|r't|}|j dd }|j dd }	| j |}
||||| j| j	| 
|| ||
d	}|t| |r\||d< |rb||d< |	rh|	|d< | j|||||	d	d
 |
 D d}||d< |S )N
request_id)pkrJ   rE   r8   r=   )	rJ   rE   r%   r8   options_showoptions_order_byoptions_func_namesoptions_namesrK   r3   c                 S   s   g | ]	\}}t |qS r   )r   	from_dict)r&   _r'   r   r   r#   r*   v       z1ProfilingView._create_context.<locals>.<listcomp>)rJ   rE   r8   r3   r=   rK   results)getr   r,   GETrC   rD   intfilters_managerrJ   rE   r;   r>   updater   rN   items)r   r%   argsr    rO   r3   rJ   rE   r8   r=   rK   contextobjsr   r   r#   _create_contextR   sJ   
zProfilingView._create_contextc                 O   s    t |d| j|g|R i |S )Nsilk/profiling.html)r   rb   )r   r%   r_   r    r   r   r#   rY   z   s    zProfilingView.getc                 C   s:   t |}dd | D }| j|| t|d| |S )Nc                 S   s   i | ]	\}}||  qS r   )as_dict)r&   identrM   r   r   r#   
<dictcomp>   rW   z&ProfilingView.post.<locals>.<dictcomp>rc   )r   r^   r\   saver   rb   )r   r%   rK   filters_as_dictr   r   r#   post   s   zProfilingView.post)N)NNNNNN)__name__
__module____qualname__rJ   rC   rE   rD   r   r   r\   r   r6   r;   r>   rN   rb   r   r   r	   rY   ri   __classcell__r   r   r!   r#   r      s&    


#(r   N)django.db.modelsr   r   django.shortcutsr   "django.template.context_processorsr   django.utils.decoratorsr   django.views.genericr   	silk.authr   r	   silk.modelsr
   r   silk.request_filtersr   r   r   r   r   r   r   r#   <module>   s    