a
    Dg                     @   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 G dd deZdS )    )settings)PermissionDenied)get_object_or_404)reverse)gettext_lazy)hooks)UnpublishPageAction)get_valid_next_url_from_request)UnpublishView)Pagec                       s   e Zd ZeZdZdZdZdZe	dZ
dZdZ fdd	ZdddZdd Z fddZdd Zdd Zdd Zdd Z fddZ  ZS )	UnpublishZwagtailadmin_explorezwagtailadmin_pages:editzwagtailadmin_pages:unpublishzwagtailadmin_pages:usagez"Page '%(page_title)s' unpublished.z)wagtailadmin/pages/confirm_unpublish.htmlzdoc-empty-inversec                    s   t  j||g|R i |S N)supersetup)selfrequestZpage_idargskwargs	__class__ b/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/views/pages/unpublish.pyr      s    zUnpublish.setupNc                 C   s   t t| jdjS )N)id)r   r   pkZspecific)r   Zquerysetr   r   r   
get_object   s    zUnpublish.get_objectc                 C   s
   | j  S r   )objectget_admin_display_titler   r   r   r   get_object_display_title   s    z"Unpublish.get_object_display_titlec                    s0   | j |j stt j|g|R i |S r   )r   Zpermissions_for_useruserZcan_unpublishr   r   dispatch)r   r   r   r   r   r   r   r    "   s    zUnpublish.dispatchc                 C   s   | j d| j i S )NZ
page_title)success_messager   r   r   r   r   r   get_success_message'   s    
zUnpublish.get_success_messagec                 C   s*   t | j}|r|S t| j| j jfdS )N)r   )r	   r   r   index_url_namer   Z
get_parentr   )r   Znext_urlr   r   r   get_next_url,   s    
zUnpublish.get_next_urlc                 C   s`   | j h}ttddrXtdD ]8}|| j gd}|rt|tr| D ]}|| qFqt	|S )NZWAGTAIL_I18N_ENABLEDFZ-construct_translated_pages_to_cascade_actions	unpublish)
r   getattrr   r   Z	get_hooks
isinstancedictvaluesupdatelist)r   objects_to_unpublishfnZfn_pagesZadditional_pagesr   r   r   get_objects_to_unpublish2   s    z"Unpublish.get_objects_to_unpublishc                 C   sz   |  d| j| j}|d ur|S | jjdd}| jD ]"}t|| jj|d}|jdd q4|  d| j| j}|d urv|S d S )NZbefore_unpublish_pageinclude_descendantsF)r   r/   T)Zskip_permission_checksZafter_unpublish_page)	Zrun_hookr   r   POSTgetr,   r   r   execute)r   Zhook_responser/   r   actionr   r   r   r%   >   s    


zUnpublish.unpublishc              
      s`   t  jf i |}|| j| j   t| jdd  t	dd | jdd  D d |S )N   c                 S   s$   g | ]}|  jd d  qS )T)Zalias_of__isnull)get_descendantsfilterlivecount).0pr   r   r   
<listcomp>Y   s   z.Unpublish.get_context_data.<locals>.<listcomp>)pageZlive_descendant_countZtranslation_countZtranslation_descendant_count)
r   get_context_datar*   r   r5   r7   r8   lenr,   sum)r   r   contextr   r   r   r=   Q   s    zUnpublish.get_context_data)N)__name__
__module____qualname__r   modelr#   Zedit_url_nameZunpublish_url_nameZusage_url_name_r!   Ztemplate_nameZheader_iconr   r   r   r    r"   r$   r.   r%   r=   __classcell__r   r   r   r   r      s"   
r   N)Zdjango.confr   Zdjango.core.exceptionsr   Zdjango.shortcutsr   Zdjango.urlsr   Zdjango.utils.translationr   rE   Zwagtailr   Zwagtail.actions.unpublish_pager   Zwagtail.admin.utilsr	   Z"wagtail.admin.views.generic.modelsr
   Zwagtail.modelsr   r   r   r   r   r   <module>   s   