File: //usr/lib/python3/dist-packages/trac/ticket/__pycache__/report.cpython-310.pyc
o
�k�`)� � @ s� d dl Z d dlZd dlZd dlmZ d dlT d dlmZ d dlm Z d dl
mZmZ d dl
mZ d dlmZ d d lmZmZ d d
lmZmZmZ d dlmZ d dlmZ d d
lmZmZmZm Z m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6 dZ7dZ8dd� Z9e�:dej;ej<B �Z=dd� Z>dd� Z?e�:dej;�Z@d dd�ZAG dd� deB�ZCdS )!� N)� IntOption)�*)�get_column_names)�IPermissionRequestor)�Resource�ResourceNotFound)�TicketSystem)�Report)�as_int�content_disposition)�format_datetime�format_time�from_utimestamp)�tag)� Paginator)�exception_to_unicode�quote_query_string�sub_vars�sub_vars_re�
to_unicode)�_�tag_)�HTTPBadRequest�IRequestHandler�RequestDone)
�Chrome�INavigationContributor�add_ctxtnav�add_link�
add_notice�add_script_data�add_stylesheet�add_warning� auth_link�web_context)�IWikiSyntaxProvider�
WikiParserz
@SORT_COLUMN@z@LIMIT_OFFSET@c C s | dkrdS | rt | �S dS )z�Normalize a cell value for display.
>>> (cell_value(None), cell_value(0), cell_value(1), cell_value('v'))
('', '0', '1', 'v')
r �0� )�str)�v� r+ �4/usr/lib/python3/dist-packages/trac/ticket/report.py�
cell_value1 s r- z�
--.*$ # single line "--" comment
| /\*([^*/]|\*[^/]|/[^*])*\*/ # C style comment
| '(\\.|[^'\\])*' # literal string
| \([^()]+\) # parenthesis group
c C s dt | �d�� S )N� r )�len�group)�mr+ r+ r, �_expand_with_spaceA s r2 c C s( d}| |kr| }t �t|�} | |ks|S )a� Strip an SQL query to leave only its toplevel structure.
This is probably not 100% robust but should be enough for most
needs.
>>> re.sub(r'\s+', lambda m: '<%d>' % len(m.group(0)), sql_skeleton('''\n SELECT a FROM (SELECT x FROM z ORDER BY COALESCE(u, ')/*(')) ORDER \n /* SELECT a FROM (SELECT x /* FROM z \n ORDER BY */ COALESCE(u, ')X(')) ORDER */ \n BY c, (SELECT s FROM f WHERE v in ('ORDER BY', '(\')') \n ORDER BY (1), '') -- LIMIT \n '''))
'<9>SELECT<1>a<1>FROM<48>ORDER<164>BY<1>c,<144>'
N)�_sql_re�subr2 )�sql�oldr+ r+ r, �sql_skeletonE s �r7 z
ORDER\s+BYc C s\ |du rt | �}|�|�� �}t|�dkr*| dt|d �� | t|d � d� fS | dfS )z�Split an SQL query according to a toplevel clause regexp.
We assume there's only one such clause present in the outer query.
>>> split_sql('''SELECT a FROM x ORDER BY u, v''', _order_by_re)
('SELECT a FROM x ', ' u, v')
N� r � r( )r7 �split�upperr/ )r5 � clause_re�skel�blocksr+ r+ r, � split_sql] s *r? c @ s e Zd Zeeeee� ej Z e
dddd�Ze
dddd�ZdZ
d d
� Zdd� Zd
d� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zh d!�Zd"d#� Zd:d$d%�Ze�d&ejej B �Z!d'd(� Z"d)d*� Z#d+d,� Z$ . /d;d0d1�Z%d2d3� Z&d4d5� Z'd6d7� Z(d<d8d9�Z)d/S )=�ReportModule�report�items_per_page�d ztNumber of tickets displayed per page in ticket reports,
by default. Set to `0` to specify no limit.
�items_per_page_rssr zjNumber of tickets displayed in the rss feeds for reports.
Set to `0` to specify no limit.
���c C s dS )N�ticketsr+ ��self�reqr+ r+ r, �get_active_navigation_item� s z'ReportModule.get_active_navigation_itemc c s>