U
    {hU=                     @   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_name_meta	app_label
model_nameZget_page_description).0modelparent_pager    h/var/www/dating/data/www/fatepal.com/env/lib/python3.8/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_idr2   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k
r^   tY nX | j | _t| jts|t| j| j krt	| j| jst	| d| j| j| j}|r|S | jj| _| j| jjd| _| j| j_ttddrH| j r2|jdd p|jdd }|r2t 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)pager6   Zcomment_notifications)+r   r   r4   r)   r5   r<   r6   parent_page_permsr7   r   r   objectsZget_by_natural_keypage_content_typeZDoesNotExistr   Zmodel_class
page_class
issubclassr9   r!   run_hookrB   rD   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*   rW   E   sn    
 

   

  
  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instancerT   r)   Zfor_user)rS   r<   rO   ZFILESrD   rT   r)   r6   formZis_valid
form_validform_invalidrX   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<   rO   rN   rE   Zcan_publish_subpagepublish_actionr)   Zhas_workflowsubmit_actionsave_actionrX   r^   r    r    r*   r_      s    zCreateView.form_validc                 C   s
   | j  S )N)rH   r"   rX   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   rD   r   _rh   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_draftrk   z
View draftFZ
new_windowrm   rh   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 liveFrq   )r   rn   rD   urlro   rh   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r6   Z
log_actionzPage '%(page_title)s' created.
page_titleafter_create_page)r^   saverD   liver)   	add_childsave_revisionr<   r6   rT   r   successro   get_admin_display_titlerJ   redirect_and_remain)rX   rY   r    r    r*   rf      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 k	r||   ||   tj| jtdd
| j i |d | 	d| j| j}|rF|S |  S )NFru   rw   Trx   Zbefore_publish_page)r6   Zafter_publish_pagez;Page '%(page_title)s' created and scheduled for publishing.ry   buttonsz,Page '%(page_title)s' created and published.rz   )r^   r{   rD   r)   r}   r~   r<   r6   rT   rJ   publishZrefresh_from_dbZ
go_live_atr   nowr   r   ro   r   rp   rs   appendrt   redirect_away)rX   revisionrY   r   r    r    r*   rd      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 )
NFru   rw   Trx   z;Page '%(page_title)s' created and submitted for moderation.ry   r   rz   )r^   r{   rD   r|   r)   r}   r~   r<   r6   Zget_workflowstartrT   is_previewabler   rr   rp   r   r   ro   r   rJ   r   )rX   Zworkflowr   rY   r    r    r*   re   
  s.    



zCreateView.submit_actionc                 C   s&   | j rt| j S td| j jS d S )NZwagtailadmin_explore)rU   r	   rD   Z
get_parentr   rh   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 )Nrj   rk   z?next=%s)r   rD   r   rU   r   r	   )rX   
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<   ro   r^   has_unsaved_changesrender_to_responseget_context_datarg   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senderrD   parentr\   F)r   Zinit_new_pagesendr@   rD   r)   rS   rT   r<   r6   r^   r   r   r   ra   r    r    r*   rN   I  s      zCreateView.getc                 C   s   t d| jj| jj| jjgdS )Nz!wagtailadmin_pages:preview_on_addrk   )r   rG   r$   r'   r)   r   rh   r    r    r*   get_preview_urlW  s    zCreateView.get_preview_urlc                 C   s~   t | j| j| jj| j| jdg}| j rZ|t	| j| j| 
 d |t| j| j | jjrv|t| j| j t|S )N)show_schedule_publishing_togglerB   rQ   )Zpreview_url)r   rD   r<   r^   r   rB   rQ   r   r   r   r   r   Zshow_comments_toggler   r   )rX   side_panelsr    r    r*   get_side_panelsa  s2    	
  zCreateView.get_side_panelsc                    s   t  jf |}| 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_typerH   r)   rR   action_menur   r^   r3   r   rB   media)rV   r   rR   Zget_bound_panelr<   rD   r^   r   r)   r   r   r   updaterG   rH   rU   r   rB   )rX   kwargscontextZbound_panelr   r   r   rZ   r    r*   r   {  s<      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 )r1   rk   ?rB   rB   rs   )r   rG   r$   r'   r)   r   r   rC   )r&   rB   rh   r    r*   r+     s   	z/CreateView.get_translations.<locals>.<listcomp>)pkc                    s^   g | ]V}|  jj r j|j kr j|r|jt	d  j
j j
j|jgddqS )r1   rk   r   )r5   r<   r6   r7   rH   Zspecific_classr9   r!   rB   r   rG   r$   r'   r   )r&   translationrh   r    r*   r+     s   r   rB   )
r)   rL   r   rF   excluderB   r   rP   onlyZselect_relatedrh   r    rh   r*   rP     s    



 zCreateView.get_translations)__name__
__module____qualname__Ztemplate_namer   ry   rW   rb   r_   ri   rp   rr   rt   rf   rd   re   r   r   r`   rN   r   r   r   rP   __classcell__r    r    rZ   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   ro   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*   #