o
    h=                     @   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r<|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_nameget_page_description).0modelparent_pager    `/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/pages/create.py
<listcomp>#   s    zadd_subpage.<locals>.<listcomp>c                 S   s   | d   S )Nr   )lower)	page_typer    r    r+   <lambda>.   s    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_idr3   verbose_namer$   r%   descriptionr    r)   r+   add_subpage   s$   

rA   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.htmlNewc                    s  t t|dj| _| j| jj| _| j st	z
t
j||| _W n
 t
jy,   tw | j | _t| jts;t| j| j vrEt	| j| jsNt	| d| j| j| j}|r]|S | jj| _| j| jjd| _| j| j_ttddr| j r|jdd p|jdd }|rt t|d| _| j| j_|  | _ nd | _g | _ | j! | _"| j"# | _$t%| j| jjdd	| _&t'| j| _(t) *|S )
Nr   before_create_page)ownerWAGTAIL_I18N_ENABLEDFlocale)language_codeT)pager7   comment_notifications)+r   r   r5   r*   r6   r=   r7   parent_page_permsr8   r   r   objectsget_by_natural_keypage_content_typeDoesNotExistr   model_class
page_class
issubclassr:   r!   run_hookrG   rI   getattrr   is_rootGETgetPOSTr   get_translationstranslationsget_edit_handleredit_handlerget_form_class
form_classr   subscriptionr   next_urlsuperdispatch)selfr=   content_type_app_namecontent_type_model_namer>   responseselected_locale	__class__r    r+   rb   E   s`   





zCreateView.dispatchc                 C   sL   | j | jj| jj| j| j| j| jjd| _| j	 r | 
| jS | | jS )Ninstancer_   r*   for_user)r^   r=   rX   FILESrI   r_   r*   r7   formis_valid
form_validform_invalidrc   r=   r    r    r+   post   s   
	zCreateView.postc                 C   sN   t | jjdr| j r|  S t | jjdr#| jjr#| 	 S | 
 S )Nzaction-publishzaction-submit)boolr=   rX   rW   rK   can_publish_subpagepublish_actionr*   has_workflowsubmit_actionsave_actionrc   rn   r    r    r+   rp      s   zCreateView.form_validc                 C   s
   | j  S )N)rQ   r"   rc   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argsEditr   buttonr   rI   r   _r{   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_draftr~   z
View draftF
new_windowr   r{   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 liveFr   )r   r   rI   urlr   r{   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}|rE|S |  S )	NFcommitrk   Tr7   
log_actionzPage '%(page_title)s' created.
page_titleafter_create_page)rn   saverI   liver*   	add_childsave_revisionr=   r7   r_   r   successr   get_admin_display_titlerS   redirect_and_remain)rc   rf   r    r    r+   ry      s    

zCreateView.save_actionc                 C   sL  | j jdd| _| jj| jd | jj| jjdd}| j| j_| j  | 	d| j| j}|r1|S |j
| jjd | j  | 	d| j| j}|rK|S | jjrm| jjt krmtj| jtd	d
| j i |  gd n(g }| jjd ur|||   ||   tj| jtdd
| j i |d | 	d| j| j}|r|S |  S )NFr   r   Tr   before_publish_page)r7   after_publish_pagez;Page '%(page_title)s' created and scheduled for publishing.r   buttonsz,Page '%(page_title)s' created and published.r   )rn   r   rI   r*   r   r   r=   r7   r_   rS   publishrefresh_from_db
go_live_atr   nowr   r   r   r   r   r   appendr   redirect_away)rc   revisionrf   r   r    r    r+   rv      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 rD||   ||   tj| jtdd| j i |d | d	| j| j}|rj|S |  S )
NFr   r   Tr   z;Page '%(page_title)s' created and submitted for moderation.r   r   r   )rn   r   rI   r   r*   r   r   r=   r7   get_workflowstartr_   is_previewabler   r   r   r   r   r   r   rS   r   )rc   workflowr   rf   r    r    r+   rx   
  s.   



zCreateView.submit_actionc                 C   s"   | j rt| j S td| j jS )Nwagtailadmin_explore)r`   r	   rI   
get_parentr   r{   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 )Nr}   r~   z?next=%s)r   rI   r   r`   r   r	   )rc   
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   validation_errorr=   r   rn   has_unsaved_changesrender_to_responseget_context_datarz   r    r    r+   rq   ?  s   zCreateView.form_invalidc                 C   sH   t jjt| j| jd | j| j| j| j| jj	d| _
d| _| |  S )N)senderrI   parentrj   F)r   init_new_pagesendrB   rI   r*   r^   r_   r=   r7   rn   r   r   r   rr   r    r    r+   rW   I  s   
zCreateView.getc                 C   s   t d| jj| jj| jjgdS )Nz!wagtailadmin_pages:preview_on_addr~   )r   rN   r$   r(   r*   r   r{   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r=|	t| j| j t|S )N)show_schedule_publishing_togglerG   rZ   r*   )preview_url)r   rI   r=   rn   r   rG   rZ   r*   r   r   r   r   r   show_comments_toggler   r   )rc   side_panelsr    r    r+   get_side_panelsa  s0   

zCreateView.get_side_panelsc                    s   t  jd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=   rk   rn   createF)viewr*   locklocked_for_user)content_typerQ   r*   r\   action_menur   rn   r4   r   rG   mediar    )ra   r   r\   get_bound_panelr=   rI   rn   r   r*   r   r   r   updaterN   rQ   r`   r   rG   )rc   kwargscontextbound_panelr   r   r   rh   r    r+   r   |  s8   zCreateView.get_context_datac                    sP    j  r fddtjj jjdD S  fdd j  dd	dD S )Nc                    sB   g | ]}|t d  jj jj jjgdd td|ji dqS )r2   r~   ?rG   rG   r   )r   rN   r$   r(   r*   r   r   rH   )r'   rG   r{   r    r+   r,     s     	z/CreateView.get_translations.<locals>.<listcomp>)pkc                    s^   g | ]+}|  jj r- j|j v r j|r|jt	d  j
j j
j|jgddqS )r2   r~   r   )r6   r=   r7   r8   rQ   specific_classr:   r!   rG   r   rN   r$   r(   r   )r'   translationr{   r    r+   r,     s&    
r   rG   )
r*   rU   r   rL   excluderG   r   rY   onlyselect_relatedr{   r    r{   r+   rY     s   


zCreateView.get_translations)__name__
__module____qualname__template_namer   r   rb   rs   rp   r|   r   r   r   ry   rv   rx   r   r   rq   rW   r   r   r   rY   __classcell__r    r    rh   r+   rB   A   s*    E5&

"rB   N)2urllib.parser   r   django.confr   "django.contrib.contenttypes.modelsr   django.core.exceptionsr   django.httpr   django.shortcutsr   r	   django.template.responser
   django.urlsr   django.utilsr   django.utils.translationr   r   r   django.views.generic.baser   wagtail.adminr   r   wagtail.admin.action_menur   wagtail.admin.ui.componentsr   wagtail.admin.ui.side_panelsr   r   r   r   wagtail.admin.utilsr   wagtail.admin.views.genericr    wagtail.admin.views.generic.baser   wagtail.modelsr   r   r   rA   rB   r    r    r    r+   <module>   s,    #