File: //usr/lib/python3/dist-packages/trac/wiki/__pycache__/model.cpython-310.pyc
o
�k�`�( � @ s\ d dl T d dlmZ d dlmZmZmZmZ d dlm Z d dl
mZmZ G dd� de
�ZdS ) � )�*)�Resource)�datetime_now�from_utimestamp�
to_utimestamp�utc)�_)�
WikiSystem�validate_page_namec @ sv e Zd ZdZejZedd� �Zddd�Zddd�Z d d
� Z
edd� �Zdd
d�Zddd�Z
dd� Zdd� Zdd� ZdS )�WikiPagez)Represents a wiki page (new or existing).c C s t | j| j| j�S �N)r �realm�name�_resource_version��self� r �1/usr/lib/python3/dist-packages/trac/wiki/model.py�resource s zWikiPage.resourceNc C s� || _ |rzt|�}W n ty d}Y nw t|t�r=|}|j}|du r=|jdur=zt|j�}W n ty< d}Y nw || _|| _|rL| � ||� nd| _d | _
| _| _d| _
d| _| j
| _| j| _dS )a; Create a new page object or retrieves an existing page.
:param env: an `Environment` object.
:param name: the page name or a `Resource` object.
:param version: the page version. The value takes precedence over the
`Resource` version when both are specified.
Nr � )�env�int�
ValueError�
isinstancer �id�versionr r �_fetch�text�comment�author�time�readonly�old_text�old_readonly)r r r r r r r r �__init__# s4 �
�zWikiPage.__init__c
C s� |d ur
d}|t |�f}nd}|f}| j�||�D ]&\}}}}}} t |�| _|| _t|�| _|| _|| _| r:t | �nd| _ d S d| _d | _ | _| _d | _d| _ d S )NzqSELECT version, time, author, text, comment, readonly
FROM wiki WHERE name=%s AND version=%sz�SELECT version, time, author, text, comment, readonly
FROM wiki WHERE name=%s ORDER BY version DESC LIMIT 1r r )
r r �db_queryr r r r r r r! )
r r r �sql�argsr r r r r! r r r r M s$ �
zWikiPage._fetchc C s2 | j d u r | j }nd| j | jf }d| jj|f S )Nz%s@%sz<%s %r>)r r � __class__�__name__)r r r r r �__repr__e s
zWikiPage.__repr__c C s
| j dkS )Nr )r r r r r �<lambda>l s
zWikiPage.<lambda>c C s( | j s ttd���| jj�W}|du r#|d| jf� | jj�d| j� n|d| j|f� | jj�d|| j� |du s>|| jkrE| � | jd� | j s]t
| j�`ddlm
} |�| j| j| j� W d � n1 sgw Y | j st
| j�jD ]}|�| � qudS t
| j�jD ]}t|d �r�|�| � q�dS )
z.Delete one or all versions of a page.
zCannot delete non-existent pageNzDELETE FROM wiki WHERE name=%szDeleted page %sz-DELETE FROM wiki WHERE name=%s and version=%szDeleted version %d of page %sr ��
Attachment�wiki_page_version_deleted)�exists� TracErrorr r �db_transactionr �log�infor r r �pages�trac.attachmentr- �
delete_allr
�change_listeners�wiki_page_deleted�hasattrr. )r r �dbr- �listenerr r r �deleten s:
��
���
��zWikiPage.deleteFc
C s� t | j�sttd| jd���| j| jk}|s"| j| jkr"ttd���|p'tt �}| j
j�J}|r\|rB| jdkrB|d| j| j| jf� n#| jd7 _|d| j| jt
|�|| j|| jf� n |d| j| jf� | jdkrot| j
�`W d � n1 syw Y || _|| _|| _t| j
�jD ]-}| j
�|�� | jdkr�|�| � n
|�| | j|||� W d � n1 s�w Y q�| j| _| j| _d S )
zSave a new version of a page.�!Invalid Wiki page name '%(name)s'�r zPage not modifiedr zf
UPDATE wiki SET text=%s WHERE name=%s AND version=%s
� z�INSERT INTO wiki
(name,version,time,author,text,comment,readonly)
VALUES (%s,%s,%s,%s,%s,%s,%s)
z)UPDATE wiki SET readonly=%s WHERE name=%sN)r
r r0 r r r"