https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/trac/ticket/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/trac/ticket/__pycache__/batch.cpython-310.pyc
o

�k�`�*�@s�ddlZddlTddlmZddlmZddlmZmZddl	m
Z
ddlmZddl
mZdd	lmZmZdd
lmZddlmZmZddlmZmZdd
lmZmZmZddlmZm Z m!Z!Gdd�de"�Z#dS)�N)�*)�NotificationSystem)�IPermissionRequestor)�ITicketManipulator�TicketSystem)�Ticket)�BatchTicketChangeEvent)�to_list)�datetime_now�utc)�tag)�exception_to_unicode�
to_unicode)�_�tag_)�HTTPBadRequest�IRequestFilter�IRequestHandler)�Chrome�add_script_data�add_warningc@s�eZdZdZeeee�dZe	e
�Ze�
d�ZdZdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�BatchModifyModuleacTicket batch modification module.

    This component allows multiple tickets to be modified in one request from
    the custom query page. For users with the TICKET_BATCH_MODIFY permission
    it will add a [TracBatchModify batch modify] section underneath custom
    query results. Users can choose which tickets and fields they wish to
    modify.
    Fz[;\s,]+z, cCs
|jdkS)Nz/batchmodify)�	path_info)�self�req�r�3/usr/lib/python3/dist-packages/trac/ticket/batch.py�
match_request5s
zBatchModifyModule.match_requestc	Cs�|jdkrttd���|j�d�|j�dd�}|j�d�}i}t|j��	�D]*}|d}|dd	|jvr6d
ndvrQ|dd
krQd|}||jvrQ|j�|�||<q't
|j�dd��}|�|||||�|�|j�d�pp|j
���dS)N�POSTzInvalid request arguments.�TICKET_BATCH_MODIFY�batchmod_value_comment��action�name)�id�
resolution�status�owner�time�
changetime�summary�description�TICKET_ADMIN)�reporterr�type�textarea�batchmod_value_�selected_tickets�
query_href)�methodrr�perm�require�args�getr�env�get_ticket_fieldsr	�_save_ticket_changes�redirect�href�query)	rr�commentr"�
new_values�fieldr#�arg_namer1rrr�process_request8s,
�
�� z!BatchModifyModule.process_requestcCs|S)Nr)rr�handlerrrr�pre_process_requestVsz%BatchModifyModule.pre_process_requestcCsZ|jdkr(|dur(d|�d�vr(|�|||d�t|j�}|�|�|�|�|||fS)Nz/queryr�ticket�tickets)rr4�add_template_datarr8�add_auto_preview�add_wiki_toolbars)rr�template�data�metadata�chromerrr�post_process_requestYs



z&BatchModifyModule.post_process_requestcCsdddgfddgfgS)Nr�
TICKET_MODIFYr,r�rrrr�get_permission_actionsds�z(BatchModifyModule.get_permission_actionscCszd|d<|jdp
|j��|d<|�||�|d<td�dd�td�d	d�td
�dd�td�d
d�g}t|||��d�dS)NT�batch_modifyr2�action_controls�add�+)r#�value�remove�-zadd / remove�+-zset to�=)�batch_list_modes�batch_list_properties)�sessionr<r=�_get_action_controlsrr�_get_list_fields)rrrKrFr[rrrrGis�
�z#BatchModifyModule.add_template_datacCsdd�t|j���D�S)NcSs.g|]}|ddkr|�d�dkr|d�qS)r.�text�format�listr#)r7)�.0�frrr�
<listcomp>ws
�z6BatchModifyModule._get_list_fields.<locals>.<listcomp>)rr8r9rPrrrr_vs�z"BatchModifyModule._get_list_fieldscs4�fdd�|D�}i}i}|D]6}t�j�jD]-}|�||�p gD]"\}}	|	|vr:t||	|�||	<||	�|�q!|||	<|g||	<q!qqdd�tt|���dd�dd�D�}
g}|
D];}	d}g}
g}||	d}��	|||	�D]}|�
|||	�\}}}|s�|}|�|�|
�|�qq|�|	|t|�|
f�q\|S)	Ncsg|]
}t�j|d��qS)r$)rr8)rc�trPrrre|sz:BatchModifyModule._get_action_controls.<locals>.<listcomp>cSsg|]\}}|�qSrr)rc�a�wrrrre��cSs|d|dfS)N�rr)�itemrrr�<lambda>�sz8BatchModifyModule._get_action_controls.<locals>.<lambda>T)�key�reverser)rr8�action_controllers�get_ticket_actions�max�append�sorted�iter�items�_get_action_controllers�render_ticket_action_controlr)rr�ticket_datarF�action_weights�action_ticketsrf�ctrl�weightr"�sorted_actionsrS�first_label�hints�widgetsrE�
controller�label�widget�hintrrPrr^{sN���
���
�
z&BatchModifyModule._get_action_controlsccs@�t|j�jD]}dd�|�||�pgD�}||vr|VqdS)z>Generator yielding the controllers handling the given `action`cSsg|]\}}|�qSrr)rcrhrgrrrre�riz=BatchModifyModule._get_action_controllers.<locals>.<listcomp>N)rr8rorp)rrrEr"r��actionsrrrrv�s����z)BatchModifyModule._get_action_controllerscCs~|��}|��}|D]2}|j�d|�}|r<||vr||nd}|j�d|d�}	|j�d|d�}
|�||	|
|�||<q
|S)N�batchmod_mode_r!�batchmod_primary_�batchmod_secondary_)r_�copyr6r7�_change_list)rrrEr?�list_fields�_valuesr@�mode�old�new�new2rrr�_get_updated_ticket_values�s�z,BatchModifyModule._get_updated_ticket_valuesc
Cs�d}|jD]}t|d�r |�||�D]
}d}t|td|d��qqg}	|D]U}
t|j|
�}|�|||�}|�|||�D]}
|�	|
�
|||��q;|�|�|jD]$}|�||�D]\}}d}|rnt|tdt
�|�|d��qXt||�qXqP|	�|�q%|sdStt�}|jj�'|	D]}|j|j||d	�|�|||�D]	}
|
�|||�q�q�Wd�n1s�wYt|||j|||�}zt|j��|�WdSty�}z|j�d
t|��t|tdt|�d��WYd}~dSd}~ww)zSave changes to tickets.T�validate_commentFz*The ticket comment is invalid: %(message)s)�messagez2The ticket field %(field)s is invalid: %(message)s)r@r�N)�whenz6Failure sending notification on ticket batchchange: %sz[The changes have been saved, but an error occurred while sending notifications: %(message)s)�ticket_manipulators�hasattrr�rrrr8r�rv�update�get_ticket_changes�populate�validate_ticketr�strongrrr
r�db_transaction�save_changes�authname�apply_action_side_effectsrr�notify�	Exception�log�errorr
r)rrr1r?r>r"�valid�manipulatorr�rF�id_rf�values�ctlrr@r��event�errrr:�sn


��


��	
���������z&BatchModifyModule._save_ticket_changescCs�t||j�}t||j�}t||j�}|dkr|}nN|dkr,|D]}||vr*|�|�qn;|dkrC|D]}||vrA|�|�||vs8q2n$|dkrg|D]}||vrT|�|�qI|D]}||vrf|�|�||vs]qW|j�|�S)NrZrUrXrY)r	�list_separator_rerrrW�list_connector_string�join)r�old_list�new_list�	new_list2r��changed_list�entryrrrr��s:
��
���
�
��zBatchModifyModule._change_listN)�__name__�
__module__�__qualname__�__doc__�
implementsrrr�is_valid_default_handler�ExtensionPointrr��re�compiler�r�rrBrDrNrQrGr_r^rvr�r:r�rrrrr!s&	

%6r)$r��	trac.core�trac.notification.apir�	trac.permr�trac.ticket.apirr�trac.ticket.modelr�trac.ticket.notificationr�	trac.utilr	�trac.util.datefmtr
r�trac.util.htmlr�trac.util.textr
r�trac.util.translationrr�trac.web.apirrr�trac.web.chromerrr�	Componentrrrrr�<module>s

https://t.me/RX1948 - 2025