a
    Dg=                     @   s0  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
 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 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"m#Z#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.m/Z/ dd Z0G dd de+e)eZ1dS )    )quote	urlencode)settings)ContentType)PermissionDenied)Http404)get_object_or_404redirect)TemplateResponse)reverse)timezone)gettext)gettext_lazy)View)messagessignals)PageActionMenu)MediaContainer)ChecksSidePanelCommentsSidePanelPageStatusSidePanelPreviewSidePanel)get_valid_next_url_from_request)HookResponseMixin)WagtailAdminTemplateMixin)LocalePagePageSubscriptionc                    s   t t|dj  | j s"t fddt  D }|j	dd d t
|dkrx|d \}}}}td	|| jS t| d
 |t| dS )Nidc                    s2   g | ]*}|  r| |jj|jj| fqS  )can_create_atget_verbose_nameZ_meta	app_label
model_nameZget_page_description).0modelparent_pager    _/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/views/pages/create.py
<listcomp>#   s   
zadd_subpage.<locals>.<listcomp>c                 S   s   | d   S )Nr   )lower)Z	page_typer    r    r)   <lambda>.       zadd_subpage.<locals>.<lambda>)key   r   wagtailadmin_pages:addz#wagtailadmin/pages/add_subpage.html)r(   
page_typesnext)r   r   specificpermissions_for_userusercan_add_subpager   typecreatable_subpage_modelssortlenr	   r   r
   r   )requestparent_page_idr1   Zverbose_namer#   r$   descriptionr    r'   r)   add_subpage   s$    

r>   c                       s   e Zd ZdZedZ fddZdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Z fd#d$Zd%d& Z  ZS )'
CreateViewzwagtailadmin/pages/create.htmlZNewc                    s  t t|dj| _| j| jj| _| j s0t	zt
j||| _W n t
jy\   tY n0 | j | _t| jtszt| j| j vrt	| j| jst	| d| j| j| j}|r|S | jj| _| j| jjd| _| j| j_ttddrF| j r0|jdd p|jdd }|r0t t|d| _| j| j_|  | _ nd | _g | _ | j! | _"| j"# | _$t%| j| jjdd	| _&t'| j| _(t) *|S )
Nr   Zbefore_create_page)ownerZWAGTAIL_I18N_ENABLEDFlocale)language_codeT)pager5   Zcomment_notifications)+r   r   r3   r(   r4   r;   r5   parent_page_permsr6   r   r   objectsZget_by_natural_keypage_content_typeZDoesNotExistr   Zmodel_class
page_class
issubclassr8   r!   run_hookrA   rC   getattrr   is_rootGETgetPOSTr   get_translationstranslationsZget_edit_handleredit_handlerZget_form_class
form_classr   subscriptionr   next_urlsuperdispatch)selfr;   Zcontent_type_app_nameZcontent_type_model_namer<   responseZselected_locale	__class__r    r)   rV   E   s^    





zCreateView.dispatchc                 C   sP   | j | jj| jj| j| j| j| jjd| _| j	 r@| 
| jS | | jS d S )NinstancerS   r(   Zfor_user)rR   r;   rN   ZFILESrC   rS   r(   r5   formZis_valid
form_validform_invalidrW   r;   r    r    r)   post   s    	
zCreateView.postc                 C   sR   t | jjdr$| j r$|  S t | jjdrF| jjrF| 	 S | 
 S d S )Nzaction-publishzaction-submit)boolr;   rN   rM   rD   Zcan_publish_subpagepublish_actionr(   Zhas_workflowsubmit_actionsave_actionrW   r]   r    r    r)   r^      s    zCreateView.form_validc                 C   s
   | j  S )N)rG   r"   rW   r    r    r)   get_page_subtitle   s    zCreateView.get_page_subtitlec                 C   s   t td| jjfdtdS )Nwagtailadmin_pages:editargsZEditr   buttonr   rC   r   _rg   r    r    r)   get_edit_message_button   s    z"CreateView.get_edit_message_buttonc                 C   s"   t jtd| jjfdtdddS )Nzwagtailadmin_pages:view_draftrj   z
View draftFZ
new_windowrl   rg   r    r    r)   get_view_draft_message_button   s
    z(CreateView.get_view_draft_message_buttonc                 C   s   t j| jjtdddS )Nz	View liveFrp   )r   rm   rC   urlrn   rg   r    r    r)   get_view_live_message_button   s    z'CreateView.get_view_live_message_buttonc                 C   s   | j jdd| _d| j_| jj| jd | jj| jjdd | j| j	_| j	  t
| jtdd| j i  | d| j| j}|r|S |  S )	NFcommitr\   Tr5   Z
log_actionzPage '%(page_title)s' created.
page_titleafter_create_page)r]   saverC   liver(   	add_childsave_revisionr;   r5   rS   r   successrn   get_admin_display_titlerI   redirect_and_remain)rW   rX   r    r    r)   re      s     

zCreateView.save_actionc                 C   sN  | j jdd| _| jj| jd | jj| jjdd}| j| j_| j  | 	d| j| j}|rb|S |j
| jjd | j  | 	d| j| j}|r|S | jjr| jjt krtj| jtd	d
| j i |  gd nPg }| jjd ur||   ||   tj| jtdd
| j i |d | 	d| j| j}|rF|S |  S )NFrt   rv   Trw   Zbefore_publish_page)r5   Zafter_publish_pagez;Page '%(page_title)s' created and scheduled for publishing.rx   buttonsz,Page '%(page_title)s' created and published.ry   )r]   rz   rC   r(   r|   r}   r;   r5   rS   rI   publishZrefresh_from_dbZ
go_live_atr   nowr   r~   rn   r   ro   rr   appendrs   redirect_away)rW   revisionrX   r   r    r    r)   rc      sH    


zCreateView.publish_actionc                 C   s   | j jdd| _d| j_| jj| jd | jj| jjdd | j	 }|
| j| jj | j| j_| j  g }| j r||   ||   tj| jtdd| j i |d | d	| j| j}|r|S |  S )
NFrt   rv   Trw   z;Page '%(page_title)s' created and submitted for moderation.rx   r   ry   )r]   rz   rC   r{   r(   r|   r}   r;   r5   Zget_workflowstartrS   is_previewabler   rq   ro   r   r~   rn   r   rI   r   )rW   Zworkflowr   rX   r    r    r)   rd   
  s.    



zCreateView.submit_actionc                 C   s&   | j rt| j S td| j jS d S )NZwagtailadmin_explore)rT   r	   rC   Z
get_parentr   rg   r    r    r)   r   0  s    
zCreateView.redirect_awayc                 C   s2   t d| jjgd}| jr*|dt| j 7 }t|S )Nri   rj   z?next=%s)r   rC   r   rT   r   r	   )rW   
target_urlr    r    r)   r   8  s    zCreateView.redirect_and_remainc                 C   s*   t | jtd| j d| _| |  S )Nz6The page could not be created due to validation errorsT)r   Zvalidation_errorr;   rn   r]   has_unsaved_changesrender_to_responseget_context_datarf   r    r    r)   r_   ?  s    zCreateView.form_invalidc                 C   sH   t jjt| j| jd | j| j| j| j| jj	d| _
d| _| |  S )N)ZsenderrC   parentr[   F)r   Zinit_new_pagesendr?   rC   r(   rR   rS   r;   r5   r]   r   r   r   r`   r    r    r)   rM   I  s    
zCreateView.getc                 C   s   t d| jj| jj| jjgdS )Nz!wagtailadmin_pages:preview_on_addrj   )r   rF   r#   r&   r(   r   rg   r    r    r)   get_preview_urlW  s    zCreateView.get_preview_urlc                 C   s   t | j| j| jj| j| j| jdg}| j r^|	t
| j| j|  d |	t| j| j | jjrz|	t| j| j t|S )N)show_schedule_publishing_togglerA   rP   r(   )Zpreview_url)r   rC   r;   r]   r   rA   rP   r(   r   r   r   r   r   Zshow_comments_toggler   r   )rW   side_panelsr    r    r)   get_side_panelsa  s0    

zCreateView.get_side_panelsc                    s   t  jf i |}| jj| j| j| jd}t| jd| jd dd}| 	 }t
|| j||gj}|| j| j| j|||| j| j| j| j|d |S )N)r;   r\   r]   createF)viewr(   lockZlocked_for_user)content_typerG   r(   rQ   action_menur   r]   r2   r   rA   media)rU   r   rQ   Zget_bound_panelr;   rC   r]   r   r(   r   r   r   updaterF   rG   rT   r   rA   )rW   kwargscontextZbound_panelr   r   r   rY   r    r)   r   |  s8    zCreateView.get_context_datac                    sT    j  r* fddtjj jjdD S  fdd j  dd	dD S d S )Nc                    sB   g | ]:}|t d  jj jj jjgdd td|ji dqS )r0   rj   ?rA   rA   rr   )r   rF   r#   r&   r(   r   r   rB   )r%   rA   rg   r    r)   r*     s   	z/CreateView.get_translations.<locals>.<listcomp>)pkc                    s^   g | ]V}|  jj r j|j v r j|r|jt	d  j
j j
j|jgddqS )r0   rj   r   )r4   r;   r5   r6   rG   Zspecific_classr8   r!   rA   r   rF   r#   r&   r   )r%   translationrg   r    r)   r*     s   r   rA   )
r(   rK   r   rE   excluderA   r   rO   onlyZselect_relatedrg   r    rg   r)   rO     s    



zCreateView.get_translations)__name__
__module____qualname__Ztemplate_namer   rx   rV   ra   r^   rh   ro   rq   rs   re   rc   rd   r   r   r_   rM   r   r   r   rO   __classcell__r    r    rY   r)   r?   A   s(   E5&

"r?   N)2urllib.parser   r   Zdjango.confr   Z"django.contrib.contenttypes.modelsr   Zdjango.core.exceptionsr   Zdjango.httpr   Zdjango.shortcutsr   r	   Zdjango.template.responser
   Zdjango.urlsr   Zdjango.utilsr   Zdjango.utils.translationr   rn   r   Zdjango.views.generic.baser   Zwagtail.adminr   r   Zwagtail.admin.action_menur   Zwagtail.admin.ui.componentsr   Zwagtail.admin.ui.side_panelsr   r   r   r   Zwagtail.admin.utilsr   Zwagtail.admin.views.genericr   Z wagtail.admin.views.generic.baser   Zwagtail.modelsr   r   r   r>   r?   r    r    r    r)   <module>   s*   #