HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/trac/versioncontrol/web_ui/__pycache__/log.cpython-310.pyc
o

�k�`�R�@sddlZddlmZmZddlTddlmZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZdd	lmZdd
lmZmZmZddlmZddlTddlmZdd
lmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'Gdd�de(�Z)Gdd�de*�Z+dS)�N)�	IntOption�
ListOption)�*)�IPermissionRequestor)�ResourceNotFound)�Ranges)�Markup�tag)�
to_unicode�wrap)�_)�	Changeset�NoSuchChangeset�RepositoryManager)�ChangesetModule)�IRequestHandler)�INavigationContributor�add_ctxtnav�add_link�
add_script�add_script_data�add_stylesheet�	auth_link�web_context)�IWikiSyntaxProvider�
WikiParserc@s�eZdZeeeee�ej	Z
edddd�Ze
ddgd�dd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zdejejd�Zdd�Zdd�Ze�de�Zddd�ZdS)�	LogModule�revisionlog�default_log_limit�dzEDefault value for the limit argument in the TracRevisionLog.
        �graph_colors)z#cc0z#0c0z#0ccz#00cz#c0cz#c00zdComma-separated list of colors to use for the TracRevisionLog
        graph display. (''since 1.0''))�doccCsdS)N�browser���self�reqr#r#�@/usr/lib/python3/dist-packages/trac/versioncontrol/web_ui/log.py�get_active_navigation_item:�z$LogModule.get_active_navigation_itemcCsgS�Nr#r$r#r#r'�get_navigation_items=r)zLogModule.get_navigation_itemscCsdgS)N�LOG_VIEWr#�r%r#r#r'�get_permission_actionsBsz LogModule.get_permission_actionscCs.t�d|j�}|r|�d�pd|jd<dSdS)Nz/log(/.*)?$��/�pathT)�re�match�	path_info�group�args)r%r&r3r#r#r'�
match_requestGs
�zLogModule.match_requestc3
s��j�d��j�dd���j�dd���j�d���j�d�}�j�d�}�j�d	�}�j�d
��	�j�d|j��t|j�}|���\}���s`�dkrSt	t
d���tt
d
|p\��d�d���|�j
kr}�j}���j��j
pqd��|ryd|nd�����}|r�t�|dd���j�nd�������j�|j��d}	g��dkr������fdd�}
n4�rψdkoˆ	oˆjo�t��dk}	������fdd�}
n�dkoو	oوj}	�����fdd�}
g}d}|}
d}d}|
�D]�\}}}|�r��||��rnu��|�}|||||d�}|tjk�r��||�|d<�dk�r(|tjk�s-|� |�|�r[||
k�r[�dk�r?||k�s[|d7}||d<||d<�dk�rRn%�dk�r[|d8}|du�rc�}n|d7}�d}||k�rrn|}
q�d}|�s�t!�����}��||j"��r�t	t
d���#��d �t
d!���i}|	�r�t$�d"d#�|D��\}}}|j%||||j&d$d%d&�t'�d'�t(�|d(�������	fd)d*�}|d+v�r�d,d-�|D�}|�r�|�k�r�|d.=nZ|�r>|�r>|�k�r>|d.d}|d.d}d}��r|d.d/�r
�d|fnd}��)�|�}t*|��pd}|�s"��s8||||d0�}t+�d1|t
d2|��#|�d ��d|d.d/<d3d-�|D�} t,�| |j�}!i}"|d4k�r�| D]C�|!�}#i}$t-|#j.d5d6d6d7�|$d8<g}%g}&|#�,�D]\}'}(})}*}+|%� |)tjk�r�|*n|'�|&� |)��qp|%|$d9<|&|$d:<|$|"�<�qUid;t/�d<��jd=��d>�j
�p�d�d?��d��d��d|�d@�j#�dA��d��d
�	�d��dB|�dC|!�dD|"�dE|�dF|j0dG�1dF��},|d4k�r�dH|,dIdJifS|dKk�rt/�d<��jddL�|,d;<dM|,dIdNifSg}-g}.|D] }|d/du�r!|.�r|.� |�|-� |.�g}.�q|.� |��q|.�r0|-� |.�|-|,dO<t2�dP�t2�dQ�t3�j�j
���}/|/�rN|/|,dR<�dk�r`t+�dS|/dTdUt
dV��|�dK||dW�}0t+�dXt4�|0�t
dY�dNdK�|�d4||dW�}1t+�dX|1t
dZ�dJ�t5�t
d[��j�6�j
�p�d��d\�d1�j7d]v�r��j7d]d1d}2t5�t8�9t8j:t
d^�|2dUd\�t;d_���d`|,fS)aNr,�mode�stop_on_copyr1r0�rev�stop_rev�revs�format�verbose�limitz=No repository specified and no default repository configured.�Repository '%(repo)s' not found��repo�?�T��resolveF�path_historyc3s6������D]}d���|dd��vr|VqdS�N�CHANGESET_VIEWr/��id)�get_path_history�perm)�h��
cset_resourcer1�reposr&r:r#r'�historys���z*LogModule.process_request.<locals>.historyr/c3s��d}t�j�D]A\}}||f�dd�<t���|�}|��D]\}}}��||�r,nd���|d��vr>d}|||fVqd}|rI||dfVqdS)NFrIrJT)�reversed�pairs�get_existing_node�get_history�rev_older_thanrM)�	separator�a�b�node�pr:�chg)rP�
curr_revranger1rQr&�	revrangesr#r'rR�s"����c3s@�t�����}|��D]}d���|dd��vr|VqdSrH)rUrVrM)r[rNrOr#r'rR�s���r)r1r:�existing_rev�change�depthr`rb�
copyfrom_pathz_The file or directory '%(path)s' doesn't exist at revision %(rev)s or at any previous revision.)r1r:zNonexistent pathcss�|]}|dVqdS)r:Nr#)�.0�itemr#r#r'�	<genexpr>�s�z,LogModule.process_request.<locals>.<genexpr>g{�G�z�?g�������?)�threads�vertices�columns�colors�
line_width�
dot_radiuszcommon/js/log_graph.js)�graphcsT�}�t�j�krd}|��d�}|�|��r�|d<�jj�jp#d|fi|��S)N)r:r8r?r>)�str�youngest_rev�update�href�log�reponame)r1r6�link_rev�params)r?r8rQr&r:r>r#r'�
make_log_href�s
z0LogModule.process_request.<locals>.make_log_href)�rss�	changelogcSsg|]}|dr|�qS)rar#�rd�ir#r#r'�
<listcomp>��z-LogModule.process_request.<locals>.<listcomp>���ra)r:r<�nextz3Revision Log (restarting at %(path)s, rev. %(rev)s)cSsg|]}|d�qS�r:r#ryr#r#r'r{srx�F�	)�initial_indent�subsequent_indent�message�files�actions�context�source)�parentrsrQ�display_revr_�items�changes�
extra_changesrm�wiki_format_messages�	changesetzrevisionlog.txt�content_typez
text/plainrw)r��absurlszrevisionlog.rsszapplication/rss+xml�item_rangeszcommon/css/diff.csszcommon/css/browser.css�
path_links�up���rqzParent directory)r=r<r;�	alternatezRSS Feed�	ChangeLogzView Latest Revision)rq�linkszOlder Revisionsz &rarr;zrevisionlog.html)<rM�requirer6�get�getintrr�env�get_repository_by_path�	TracErrorrr�striprs�query_string�redirectrqrr�normalize_path�	RevRangesrZ�
normalize_rev�resource�child�realm�has_linear_changesets�lenrWr
�DELETE�previous_rev�EDIT�appendrU�created_revr��make_log_graphrpr rr�truncaternr�get_changesrr�r�config�getboolr�get_path_linksrrr"�chromer	�spanrYr)3r%r&r;r<r=�rmrs�qs�normpath�
show_graphrR�inforb�
previous_path�count�history_remaining�old_path�old_rev�old_chgre�
stop_limitr[rmrgrhrirv�next_rev�	next_path�next_revranges�new_revrange�older_revisions_href�	revisionsr�r�r��csr�r��cpath�kindr]�bpath�brev�datar��ranger��rss_href�changelog_hrefr~r#)
rPr^r?r8r1rQr&r:r_r>r'�process_requestMs�
�
�

�
��
�




���
�


�
������

����������������
�


��

�



����
���zLogModule.process_requestz%(?:%(int)s|%(cset)s(?:[:-]%(cset)s)?))�int�csetc#s@�dtjd�j�fdd�fVdtj�fdd�fVdS)Nz!?\[(?P<it_log>%s\s*)z+(?P<log_revs>%s)(?P<log_path>[/?][^\]]*)?\]cs��|d|dd�||�S)N�log1r/r}��_format_link��x�y�zr-r#r'�<lambda>`sz+LogModule.get_wiki_syntax.<locals>.<lambda>z#(?:\b|!)r%s\b(?:/[a-zA-Z0-9_/+-]+)?cs��|dd|dd�|�S)N�log2�@r/r�r�r-r#r'r�ds)r�INTERTRAC_SCHEME�	REV_RANGEr�RE_STRr-r#r-r'�get_wiki_syntaxZs��
�

�zLogModule.get_wiki_syntaxccs�d|jfVdS)Nrrr�r-r#r#r'�get_link_resolversfs�zLogModule.get_link_resolversz([^@:]*)[@:]%s?Nc
sX|dkr5|��}|�d�}|�d�}|�d�pd}	d||	|f}
|�d|
||�}|r,|S|�|	�\}	}}
nM|dvs;J�|dkrH|���\�}}
nd	}}
d	�t��dd
�����}	d	}|j���r��fdd�d
D�}t	dd�|D��}�d|��|d
d�}	}t
|j�}z�|�|	�\}}}	|s�|�
|j�}|dur�|�|�}|r�|	p�d}	d|�|j�d|	��vr�|jp�d}t||�}|��r�|jj||	t|�d�}n|�|�|jj||	|p�dd�}|r�d|vr�d|d
d�}tj|d|||
d�WStd�}n|�rtd|d�}ntd�}Wnt�y#}z
t|�}WYd}~nd}~wwtj|d|d�S)Nr��it_log�log_revs�log_pathr0z%s%s@%srr)rrr�rDr/csg|]}|�vo��|��qSr#)�index)rd�sep�r3r#r'r{�sz*LogModule._format_link.<locals>.<listcomp>z:@cSsg|]}|dur|�qS)Fr#ryr#r#r'r{�r|r,r�)r<rrC�&)�class_rqz No permission to view change logr@rAzNo default repository definedzmissing source)r��title)�	groupdictr��shorthand_intertrac_helper�
split_link�joinrS�split�LOG_LINK_REr3�minrr�r��get_default_repositoryr��get_repositoryrMr�r�rsr��
has_rangesrqrrrnr�r	rYrr�r
)r%�	formatter�nsr3�label�	fullmatch�groupsr�r<r1�target�	intertrac�query�fragment�indexes�idxr�rsrQr_rq�errmsg�er#r�r'r�ksx

�


�


�

�
�
���zLogModule._format_linkr*)�__name__�
__module__�__qualname__�
implementsrrrrr�changeset_realmr�rrrr r(r+r.r7r�rr�r�CHANGESET_IDr�r�r�r2�compiler�r�r#r#r#r'r(s4����rc@sheZdZddd�Zdd�Zddd�Zd	d
�Ze�dde	j
iej�Zd
d�Z
dd�Zdd�Zdd�ZdS)r�NFcCs4||_||_g|_d|_|_|r|�|�dSdSr*)rQrFrTrYrZ�_append)r%rQr<rFr#r#r'�__init__�s�zRevRanges.__init__cCs&t|j�}|dkp|dko|j|jkS)Nr/)r�rTrYrZ)r%�nr#r#r'r��s
zRevRanges.has_rangescCs�t|�}|r
t|�}t|j|jd�}|j}|jD]}||kr'|r%|�|�n|�|�q|r=|dd|_|dd|_|��|S)NrErr}r/)	�tupler�rQrFrTr�rYrZ�_reduce)r%�	curr_pair�new_pairr_rT�pairr#r#r'r��s 

zRevRanges.truncatec	CsP|st|��|jr|j�|�S|jjr&zt|�WSttfy%|YSw|Sr*)rrFrQr�r�r��
ValueError�	TypeError)r%r:r#r#r'�_normrev�s
�zRevRanges._normrevz�(?:
        %(cset)s[:-]%(cset)s    |  # int or hexa revs
        [0-9]+[:-][A-Za-z_0-9]+ |  # e.g. 42-head
        [A-Za-z_0-9]+[:-][0-9]+ |  # e.g. head-42
        [^:]+:[^:]+                # e.g. master:dev-42
        )\Z
        r�cCs�|sdSg}t�d|�D]G}d}}|j�|�r*dD]}||vr)|�|�\}}nq|dur6|�|�}}n||krB|�|�}}n
|�|�}|�|�}|�||f�q|j�|�|��dS)Nu,​?z:-)	r2r��_cset_range_rer3rr�rT�extendr)r%r<rTr:rYrZr�r#r#r'r�s(�

zRevRanges._appendcCs�tdd�|jD��r#z
tt|�dd�}WnYn<|j|jdd�<n3t�}|jdd�}t|�D]\}}||vr>d||<q1|�|�q1t|�t|�krVtd|�|jdd�<|jrk|jdd|_	|jdd|_
dSd|_	|_
dS)Ncss,�|]}t|dt�ot|dt�VqdS�rr/N)�
isinstancer��rdrr#r#r'rf�s�$�z$RevRanges._reduce.<locals>.<genexpr>T)�reorderrr}r/)�allrTrrn�set�	enumerate�addr��filterrYrZ)r%�ranges�seenrTrrr#r#r'r�s(�
zRevRanges._reducecCs
t|j�Sr*)r�rTr-r#r#r'�__len__s
zRevRanges.__len__cs*|jjrdnd�d��fdd�|jD��S)N�-�:�,c3s<�|]}|d|dkr��tt|��nt|d�VqdSr)r��maprnr�r�r#r'rfs� �

�z$RevRanges.__str__.<locals>.<genexpr>)rQr�r�rTr-r#r(r'�__str__s�zRevRanges.__str__)NFr*)rrrrr�r�rr2r
rr	�VERBOSErrrr#r)r#r#r#r'r��s


��r�),r2�trac.configrr�	trac.core�	trac.permr�
trac.resourcer�	trac.utilr�trac.util.htmlrr	�trac.util.textr
r�trac.util.translationr�trac.versioncontrol.apir
rr�$trac.versioncontrol.web_ui.changesetr�trac.versioncontrol.web_ui.util�trac.web.apir�trac.web.chromerrrrrrrr�	trac.wikirr�	Componentr�objectr�r#r#r#r'�<module>s((