o
    h(                     @   s   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	 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 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 d	dlmZ d	dl m!Z! d	dl"m#Z#m$Z$ d	dl%m&Z& G dd deZ'dS )    )OrderedDict)settings)Http404)path)SessionAuthentication)Response)PagesAPIViewSet)Page   )ConvertAliasPageAPIAction)CopyPageAPIAction)CopyForTranslationAPIAction)CreatePageAliasAPIAction)DeletePageAPIAction)MovePageAPIAction)PublishPageAPIAction)RevertToPageRevisionAPIAction)UnpublishPageAPIAction)ForExplorerFilterHasChildrenFilter)AdminPageSerializerc                
       s   e Zd ZeZegZeee	e
eeeeed	Zejeeg Zejg d Zejdg Zejg d Zg ZejddgZe fddZd	d
 Zdd Z fddZdd Z  fddZ! fddZ"dd Z#e fddZ$  Z%S )PagesAdminAPIViewSet)	convert_aliascopydeletepublish	unpublishmovecopy_for_translationcreate_aliasrevert_to_page_revision)latest_revision_created_atstatuschildrendescendantsparent	ancestorstranslationsadmin_display_title)r!   r"   r#   r(   for_explorerhas_childrenc                    s&   t  |}ttdds|d |S )NWAGTAIL_I18N_ENABLEDFr'   )superget_detail_default_fieldsgetattrr   remove)clsmodeldetail_default_fields	__class__ W/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/api/views.pyr-   K   s   
z.PagesAdminAPIViewSet.get_detail_default_fieldsc                 C   s   t  S )zY
        Returns the page that is used when the `&child_of=root` filter is used.
        )r	   get_first_root_nodeselfr5   r5   r6   get_root_pageU   s   z"PagesAdminAPIViewSet.get_root_pagec                 C   s
   t j S )z
        Returns a queryset containing all pages that can be seen by this user.

        This is used as the base for get_queryset and is also used to find the
        parent pages when using the child_of and descendant_of filters as well.
        )r	   objectsallr8   r5   r5   r6   get_base_queryset[   s   
z&PagesAdminAPIViewSet.get_base_querysetc                    s"   t   }|jdd  }|S )Nr
   )depth)r,   get_querysetexcludedefer_streamfieldsspecific)r9   querysetr3   r5   r6   r?   d   s   
z!PagesAdminAPIViewSet.get_querysetc                 C   s>   t  }| j D ]\}}t d|jjfd|jjfg||< q|S )Nverbose_nameverbose_name_plural)r   
seen_typesitems_metarD   rE   )r9   typesnamer1   r5   r5   r6   get_type_infom   s   


z"PagesAdminAPIViewSet.get_type_infoc                    s   t  |}|  |jd< |S N__types)r,   listing_viewrK   data)r9   requestresponser3   r5   r6   rN   z   s   z!PagesAdminAPIViewSet.listing_viewc                    s    t  ||}|  |jd< |S rL   )r,   detail_viewrK   rO   )r9   rP   pkrQ   r3   r5   r6   rR      s   z PagesAdminAPIViewSet.detail_viewc                 C   sd   |   }|| jvrtd| d| j| | |}|j|jd}| s+t|jddS |||jS )Nzunrecognised action '')rO   i  )r"   )	
get_objectactionsr   
serializerrO   is_validr   errorsexecute)r9   rP   rS   action_nameinstanceactionaction_datar5   r5   r6   action_view   s   
z PagesAdminAPIViewSet.action_viewc                    s.   t   }|td| ddiddg |S )zF
        This returns a list of URL patterns for the endpoint
        z"<int:pk>/action/<str:action_name>/postr_   r]   )rJ   )r,   get_urlpatternsextendr   as_view)r0   urlpatternsr3   r5   r6   ra      s   
	z$PagesAdminAPIViewSet.get_urlpatterns)&__name__
__module____qualname__r   base_serializer_classr   authentication_classesr   r   r   r   r   r   r   r   r   rV   r   filter_backendsr   r   meta_fieldsbody_fieldslisting_default_fieldsdetail_only_fieldsknown_query_parametersunionclassmethodr-   r:   r=   r?   rK   rN   rR   r_   ra   __classcell__r5   r5   r3   r6   r      sJ    
			r   N)(collectionsr   django.confr   django.httpr   django.urlsr   rest_framework.authenticationr   rest_framework.responser   wagtail.api.v2.viewsr   wagtail.modelsr	   actions.convert_aliasr   actions.copyr   actions.copy_for_translationr   actions.create_aliasr   actions.deleter   actions.mover   actions.publishr   actions.revert_to_page_revisionr   actions.unpublishr   filtersr   r   serializersr   r   r5   r5   r5   r6   <module>   s(    