o
    h                     @   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_move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   Y/var/www/html/ndineBlogger/venv/lib/python3.10/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   s2   | j r|s| j| j |stdd S d S d S )NzDYou do not have permission to move the page to the target specified.)r   r   permissions_for_user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
p&|j|||||d t ( t||| j  |jj|jd}
||
_|
  |	rS|
|| W d    n1 s]w   Y  tj	|j
pi|j|
||||d t||	rwdnd| j|j|j d|j|j dd	d
 td|j|j| d S )Nr   )Page)id)parent)senderinstanceparent_page_beforeparent_page_afterurl_path_beforeurl_path_afterzwagtail.movezwagtail.reorder)r   title)sourcedestination)r    actionr   datazPage moved: "%s" id=%d path=%s)wagtail.modelsr   
get_parentobjectsgetr   url_pathset_url_pathr   sendspecific_class	__class__r   atomicr   r   processsave_update_descendant_url_pathsr   r   r   specific_deferredget_admin_display_titleloggerinfor%   )r   r   r   r   r   parent_beforeold_pageold_url_pathnew_url_pathurl_path_changednew_pager   r   r   
_move_page#   sX   





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   rA   r   )r   r   r   r   r   r   executec   s
   

zMovePageAction.execute)NN)F)r
   r   r   r   r   rA   rB   r   r   r   r   r      s
    

@r   )loggingdjango.core.exceptionsr   	django.dbr   treebeard.mp_treer   wagtail.log_actionsr   wagtail.signalsr   r   	getLoggerr9   r	   r   r   r   r   r   <module>   s    
