a
    Dg                     @   st   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ e dZG dd	 d	eZG d
d dZdS )    N)PermissionDenied)transaction)MP_MoveHandler)log)post_page_movepre_page_moveZwagtailc                   @   s   e Zd ZdZdS )MovePagePermissionErrorzX
    Raised when the page move cannot be performed due to insufficient permissions.
    N)__name__
__module____qualname____doc__ r   r   X/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/actions/move_page.pyr      s   r   c                   @   s2   e Zd ZdddZdddZdd Zdd	d
ZdS )MovePageActionNc                 C   s   || _ || _|| _|| _d S )N)pagetargetposuser)selfr   r   r   r   r   r   r   __init__   s    zMovePageAction.__init__Fc                 C   s*   | j r&|s&| j| j |s&tdd S )NzDYou do not have permission to move the page to the target specified.)r   r   Zpermissions_for_userZcan_move_tor   )r   parent_afterskip_permission_checksr   r   r   check   s
    
zMovePageAction.checkc                 C   s6  ddl m} | }|jj|jd}|j}|j|d}||k}	tj	|j
pL|j|||||d t P t||| j  |jj|jd}
||
_|
  |	r|
|| W d    n1 s0    Y  tj	|j
p|j|
||||d t||	rdnd| j|j|j d|j|j dd	d
 td|j|j| d S )Nr   )Page)id)parent)ZsenderinstanceZparent_page_beforeZparent_page_afterZurl_path_beforeZurl_path_afterzwagtail.movezwagtail.reorder)r   title)sourceZdestination)r   actionr   datazPage moved: "%s" id=%d path=%s)Zwagtail.modelsr   
get_parentZobjectsgetr   Zurl_pathZset_url_pathr   sendZspecific_class	__class__r   Zatomicr   r   processsaveZ_update_descendant_url_pathsr   r   r   Zspecific_deferredZget_admin_display_titleloggerinfor   )r   r   r   r   r   Zparent_beforeZold_pageZold_url_pathZnew_url_pathZurl_path_changedZnew_pager   r   r   
_move_page#   sT    


*


zMovePageAction._move_pagec                 C   s<   | j dv r| j}n
| j }| j||d | | j| j|S )N)zfirst-childz
last-childzsorted-child)r   )r   r   r!   r   r)   r   )r   r   r   r   r   r   executec   s
    

zMovePageAction.execute)NN)F)F)r	   r
   r   r   r   r)   r*   r   r   r   r   r      s   

@r   )loggingZdjango.core.exceptionsr   Z	django.dbr   Ztreebeard.mp_treer   Zwagtail.log_actionsr   Zwagtail.signalsr   r   	getLoggerr'   r   r   r   r   r   r   <module>   s   
