a
    Dg%                     @   sR   d dl Z d dlmZmZ d dlmZ e dZG dd deZG dd deZ	dS )	    N)UnpublishActionUnpublishPermissionError)page_unpublishedZwagtailc                   @   s   e Zd ZdZdS )UnpublishPagePermissionErrorz]
    Raised when the page unpublish cannot be performed due to insufficient permissions.
    N)__name__
__module____qualname____doc__ r
   r
   ]/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/actions/unpublish_page.pyr   	   s   r   c                       sN   e Zd Zd fdd	Zd fdd	Zdd	 Z fd
dZd fdd	Z  ZS )UnpublishPageActionFTNc                    s    t  j|||||d || _d S )N)set_expiredcommituser
log_action)super__init__include_descendants)selfpager   r   r   r   r   	__class__r
   r   r      s    	zUnpublishPageAction.__init__c              
      sD   zt  | W n. ty> } ztd|W Y d }~n
d }~0 0 d S )Nz1You do not have permission to unpublish this page)r   checkr   r   )r   skip_permission_checkserrorr   r
   r   r   $   s    zUnpublishPageAction.checkc                 C   s   |j dd d S )NF)clean)save)r   objectr
   r
   r   _commit_unpublish,   s    z%UnpublishPageAction._commit_unpublishc                    s>   |j  D ]}|jdd q
tj|j|jd t | d S )NF)r   )Zsenderinstance)	aliasesallZ	unpublishr   sendZspecific_classspecificr   _after_unpublish)r   r   aliasr   r
   r   r$   0   s    z$UnpublishPageAction._after_unpublishc                    sZ   t  | | jrV| j     D ](}t	|}|
| j r,|jdd q,d S )NT)r   )r   executer   r   Zget_descendantsZliveZdefer_streamfieldsr#   iteratorr   Zpermissions_for_userr   Zcan_unpublish)r   r   Zlive_descendant_pageactionr   r
   r   r&   8   s    zUnpublishPageAction.execute)FTNTF)F)F)	r   r   r   r   r   r   r$   r&   __classcell__r
   r
   r   r   r      s        r   )
loggingZwagtail.actions.unpublishr   r   Zwagtail.signalsr   	getLoggerloggerr   r   r
   r
   r
   r   <module>   s
   
