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mZ ddlmZ dd	lmZ G d
d dejZG dd deZG dd deZG dd dejZG dd dejZdS )    )forms)settings)gettext)ngettext)widgets)PagePageViewRestriction   )WagtailAdminModelForm)BaseViewRestrictionFormc                       s(   e Zd Z fddZ fddZ  ZS )CopyFormc           
         s  | d| _| dd | _| d}t j|i | tj| jjtdd| j	d< t
tdd}tj| jjtd	|tjd
| j	d< tj| j tj tj| jj dddtdtdd| j	d< | jjdd}| d }|dkrtjddtdtdd|d|i d| j	d< |r|  }|dkr|dkrtd}td}	ntd}tdd |d|i }	tjdd||	d| j	d!< tjddtd"td#d| j	d$< d S d S )%Npageusercan_publishz	New title)initiallabel	new_titleWAGTAIL_ALLOW_UNICODE_SLUGSTzNew slug)r   r   allow_unicodewidgetnew_slugcopy_totarget_modelscan_choose_root
user_permsNew parent pagez4This copy will be a child of this given parent page.r   querysetr   r   	help_textnew_parent_page)	inclusiver	   r   FzCopy subpagesz!This will copy %(count)s subpage.z"This will copy %(count)s subpages.count)requiredr   r   r   copy_subpageszPublish copied pagez>This page is live. Would you like to publish its copy as well?zPublish copieszP%(count)s of the pages being copied is live. Would you like to publish its copy?zU%(count)s of the pages being copied are live. Would you like to publish their copies?publish_copiesAliasz.Keep the new pages updated with future changesalias)popr   r   super__init__r   	CharFieldtitle_fieldsgetattrr   	SlugFieldslugr   	SlugInputModelChoiceField
get_parentr   objectsallAdminPageChooserspecific_classallowed_parent_page_modelsget_descendantsr"   BooleanFieldr   live)
selfargskwargsr   r   pages_to_copysubpage_countpages_to_publish_countr   r   	__class__ Y/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/forms/pages.pyr*      s   

zCopyForm.__init__c                    s   t   }|d}|dp| j }|| j s.| t	dd|j
 i g| jd< |rL| j|d rL| t	dd|i g| jd< |d= |drg| j|ks\|| jrg| t	d	g| jd< |S )
Nr   r    z;You do not have permission to copy to page "%(page_title)s"
page_title)r1   zYThis slug is already in use within the context of its parent page "%(parent_page_title)s"parent_page_titler$   z8You cannot copy a page into itself when copying subpages)r)   cleangetr   r4   permissions_for_userr   can_add_subpageerror_classr-   specific_deferredget_admin_display_title_errorsget_childrenfilterr"   is_descendant_of)r=   cleaned_datar1   parent_pagerC   rE   rF   rI   V   s6   





	

zCopyForm.clean)__name__
__module____qualname__r*   rI   __classcell__rE   rE   rC   rF   r      s    Hr   c                       s*   e Zd Z fddZG dd dZ  ZS )PageViewRestrictionFormc                    sx   | dg  t j|i | ttdi dds)dd tjD | jd _	| jd=  fd	d| jd j	D | jd _	d S )
Nprivate_page_optionsWAGTAIL_PRIVATE_PAGE_OPTIONSSHARED_PASSWORDTc                 S   s   g | ]}|d  t jkr|qS r   )r   PASSWORD.0choicerE   rE   rF   
<listcomp>   s
    z4PageViewRestrictionForm.__init__.<locals>.<listcomp>restriction_typepasswordc                    s*   g | ]}|d   v s|d  t jkr|qS r^   )r   NONEr`   r[   rE   rF   rc      s    )
r(   r)   r*   r/   r   rJ   r   RESTRICTION_CHOICESr.   choicesr=   r>   r?   rC   rg   rF   r*      s   

z PageViewRestrictionForm.__init__c                   @   s   e Zd ZeZdZdS )zPageViewRestrictionForm.Meta)rd   re   groupsN)rV   rW   rX   r   modelr.   rE   rE   rE   rF   Meta   s    rm   )rV   rW   rX   r*   rm   rY   rE   rE   rC   rF   rZ      s    rZ   c                       sj   e Zd Zeje ddZ				d fdd	Zedd Z	d fd	d
	Z
 fddZ fddZ  ZS )WagtailAdminPageFormF)r   r#   Nc                    s^   || _ |di }| j r|j|d< t j||g|R d|i| || _| js-| jd= d S d S )Nr   comment_notifications)subscriptionr(   ro   r)   r*   rU   show_comments_toggler.   )r=   datafilesrU   rp   r>   r?   r   rC   rE   rF   r*      s   	
 zWagtailAdminPageForm.__init__c                 C   s   d| j jv S Ncomments)rD   formsets)r=   rE   rE   rF   rq      s   z)WagtailAdminPageForm.show_comments_toggleTc                    s6   | j r| jr| jd | j_|r| j  t j|dS )Nro   )commit)rq   rp   rT   ro   saver)   )r=   rw   rC   rE   rF   rx      s   
zWagtailAdminPageForm.savec                    s,   | j d}|r|j s| j d= t  S rt   )rv   rJ   management_formis_validr)   )r=   ru   rC   rE   rF   rz      s   
zWagtailAdminPageForm.is_validc                    sP   t   }d| jv r&|d }t|| j| js&| dt	t
dd|i  |S )Nr1   zAThe slug '%(page_slug)s' is already in use within the parent page	page_slug)r)   rI   rT   r   _slug_is_availablerU   instance	add_errorr   ValidationErrorr-   )r=   rT   r{   rC   rE   rF   rI      s   


zWagtailAdminPageForm.clean)NNNN)T)rV   rW   rX   r   r;   CheckboxInputro   r*   propertyrq   rx   rz   rI   rY   rE   rE   rC   rF   rn      s    
rn   c                       s   e Zd Z fddZ  ZS )MoveFormc              	      sr   | d| _| d| _t j|i | tj| j tj	
 tjdd| j| jjgdtdtdd| jd	< d S )
Npage_to_movetarget_parent_modelsTmove_to)r   r   r   pages_to_mover   z"Select a new parent for this page.r   r    )r(   r   r   r)   r*   r   r3   r4   r   r5   r6   r   AdminPageMoveChooserpkr-   r.   rj   rC   rE   rF   r*      s   zMoveForm.__init__)rV   rW   rX   r*   rY   rE   rE   rC   rF   r      s    r   c                       s$   e Zd Z fddZdd Z  ZS )ParentChooserFormc                    sZ   || _ || _t j|i | tjtj t	j
| j  dddtdtdd| jd< d S )NTadd_subpager   zParent pagez7The new page will be a child of this given parent page.)r   r   r   r   rU   )child_page_typer   r)   r*   r   r3   r   r5   r6   r   r7   r9   r-   r.   )r=   r   r   r>   r?   rC   rE   rF   r*      s   zParentChooserForm.__init__c                 C   sh   | j d j}|| j sttdd| i | j	
|s2ttd| j	 | d |S )NrU   zCYou do not have permission to create a page under "%(page_title)s".rG   zHYou cannot create a page of type "%(page_type)s" under "%(page_title)s".)	page_typerG   )rT   rN   rK   r   rL   r   r   r-   rO   r   can_create_atget_verbose_name)r=   rU   rE   rE   rF   clean_parent_page  s$   
	z#ParentChooserForm.clean_parent_page)rV   rW   rX   r*   r   rY   rE   rE   rC   rF   r      s    r   N)djangor   django.confr   django.utils.translationr   r-   r   wagtail.adminr   wagtail.modelsr   r   modelsr
   view_restrictionsr   Formr   rZ   rn   r   r   rE   rE   rE   rF   <module>   s    uC