a
    Dg                     @   s:   d dl mZ d dlmZ G dd deZG dd dZdS )    )PermissionDenied)logc                   @   s   e Zd ZdZdS )DeletePagePermissionErrorzZ
    Raised when the page delete cannot be performed due to insufficient permissions.
    N)__name__
__module____qualname____doc__ r	   r	   Z/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/actions/delete_page.pyr      s   r   c                       sD   e Zd Zdd ZdddZ fddZddd	d
Zdd Z  ZS )DeletePageActionc                 C   s   || _ || _d S )N)pageuser)selfr   r   r	   r	   r
   __init__   s    zDeletePageAction.__init__Fc                 C   s(   | j r$|s$| j| j  s$tdd S )Nz.You do not have permission to delete this page)r   r   Zpermissions_for_userZ
can_deleter   )r   skip_permission_checksr	   r	   r
   check   s    zDeletePageAction.checkc                    s   ddl m} t||u rZ|   D ]}| | q(| |j t||j|i |S t	|j
j|jd| jdj|i |S d S )Nr   )Page)id)r   )Zwagtail.modelsr   typeZget_descendantsZspecificiteratorlog_deletionsuperdeleter   Zobjectsgetr   r   execute)r   r   argskwargsr   child	__class__r	   r
   _delete_page   s    zDeletePageAction._delete_pager   c                O   s&   | j |d | j| jg|R i |S )Nr!   )r   r    r   )r   r   r   r   r	   r	   r
   r   0   s    zDeletePageAction.executec                 C   s   t |d| jdd d S )Nzwagtail.deleteT)instanceactionr   Zdeleted)r   r   )r   r   r	   r	   r
   r   5   s    zDeletePageAction.log_deletion)F)	r   r   r   r   r   r    r   r   __classcell__r	   r	   r   r
   r      s
   

r   N)Zdjango.core.exceptionsr   Zwagtail.log_actionsr   r   r   r	   r	   r	   r
   <module>   s   