a
    Dg	                     @   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   ZIntegerFielddestination_page_idZBooleanField	recursive	keep_liveZ	CharFieldslugtitle r   r   ]/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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 rB|d |d< nt||j}||jkr`||d< d|v rt|d |d< t|||d |d || jjdS )Nr   )idr   r   r   r   )pagetor   r   update_attrsuser)	getZ
get_parentr   r   r   r   r   requestr!   )selfinstancedatar   Zdestinationr    Zavailable_slugr   r   r   _action_from_data   s(    


z#CopyPageAPIAction._action_from_datac              
   C   s   |  ||}z| }W n^ tyF } zt|jW Y d }~n:d }~0  tyv } zt|jd W Y d }~n
d }~0 0 | j	|}t
|jtjdS )Nr   )r   )r'   executeDjangoValidationErrorr   Zmessage_dictr	   r
   argsviewZget_serializerr   r&   r   ZHTTP_201_CREATED)r$   r%   r&   actionZnew_pagee
serializerr   r   r   r(   8   s    $zCopyPageAPIAction.executeN)r   r   r   r   r.   r'   r(   r   r   r   r   r      s   r   N)Zdjango.core.exceptionsr   r)   Zdjango.shortcutsr   Zrest_frameworkr   r   Zrest_framework.exceptionsZrest_framework.responser   Zrest_framework.serializersr   Zwagtail.actions.copy_pager   r	   Zwagtail.api.v2.utilsr
   Zwagtail.coreutilsr   Zwagtail.modelsr   baser   r   r   r   r   r   r   <module>   s   	