o
    h	                     @   s   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d
dlmZ G dd deZG dd deZdS )    )ValidationError)get_object_or_404)fieldsstatus)Response)
Serializer)CopyPageActionCopyPageIntegrityError)BadRequestError)find_available_slug)Page   )	APIActionc                   @   sL   e Zd ZejddZejdddZejdddZej	ddZ
ej	ddZdS )CopyPageAPIActionSerializerF)required)defaultr   TN)__name__
__module____qualname__r   IntegerFielddestination_page_idBooleanField	recursive	keep_live	CharFieldslugtitle r   r   ^/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/api/actions/copy.pyr      s    r   c                   @   s    e Zd ZeZdd Zdd ZdS )CopyPageAPIActionc                 C   s   | d}|d u r| }ntt|d}i }d|v r!|d |d< nt||j}||jkr0||d< d|v r:|d |d< t|||d |d || jjdS )Nr   )idr   r   r   r   )pagetor   r   update_attrsuser)	get
get_parentr   r   r   r   r   requestr$   )selfinstancedatar   destinationr#   available_slugr   r   r   _action_from_data   s(   


z#CopyPageAPIAction._action_from_datac              
   C   s|   |  ||}z| }W n# ty } zt|jd }~w ty/ } zt|jd d }~ww | j	|}t
|jtjdS )Nr   )r   )r-   executeDjangoValidationErrorr   message_dictr	   r
   argsviewget_serializerr   r*   r   HTTP_201_CREATED)r(   r)   r*   actionnew_pagee
serializerr   r   r   r.   8   s   
zCopyPageAPIAction.executeN)r   r   r   r   r8   r-   r.   r   r   r   r   r      s    r   N)django.core.exceptionsr   r/   django.shortcutsr   rest_frameworkr   r   rest_framework.exceptionsrest_framework.responser   rest_framework.serializersr   wagtail.actions.copy_pager   r	   wagtail.api.v2.utilsr
   wagtail.coreutilsr   wagtail.modelsr   baser   r   r   r   r   r   r   <module>   s    	