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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rtjddtdtdd|d|i d| j	d< |r|  }|dkr~|dkrJt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 )%Npageusercan_publishz	New title)initiallabelZ	new_titleZWAGTAIL_ALLOW_UNICODE_SLUGSTzNew slug)r   r   allow_unicodewidgetnew_slugZ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)Z	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?Zpublish_copiesZAliasz.Keep the new pages updated with future changesalias)popr   r   super__init__r   Z	CharFieldtitle_fieldsgetattrr   Z	SlugFieldslugr   Z	SlugInputModelChoiceField
get_parentr   objectsallAdminPageChooserZspecific_classallowed_parent_page_modelsZget_descendantsr   BooleanFieldr   Zlive)
selfargskwargsr   r   Zpages_to_copyZsubpage_countZpages_to_publish_countr   r   	__class__ X/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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< |r| j|d r| t	dd|i g| jd< |d= |dr| j|ks|| jr| t	d	g| jd< |S )
Nr   r   z;You do not have permission to copy to page "%(page_title)s"
page_title)r)   zYThis slug is already in use within the context of its parent page "%(parent_page_title)s"Zparent_page_titler    z8You cannot copy a page into itself when copying subpages)r#   cleangetr   r+   permissions_for_userr   can_add_subpageZerror_classr&   specific_deferredget_admin_display_title_errorsZget_childrenfilterr   Zis_descendant_of)r1   cleaned_datar)   parent_pager4   r6   r7   r9   V   s<    





	


zCopyForm.clean)__name__
__module____qualname__r$   r9   __classcell__r6   r6   r4   r7   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sRdd tjD | jd _	| jd=  fd	d| jd j	D | jd _	d S )
Nprivate_page_optionsZWAGTAIL_PRIVATE_PAGE_OPTIONSZSHARED_PASSWORDTc                 S   s   g | ]}|d  t jkr|qS r   )r   ZPASSWORD.0choicer6   r6   r7   
<listcomp>   s   z4PageViewRestrictionForm.__init__.<locals>.<listcomp>restriction_typepasswordc                    s*   g | ]"}|d   v s"|d  t jkr|qS rI   )r   NONErJ   rH   r6   r7   rM      s   )
r"   r#   r$   r(   r   r:   r   ZRESTRICTION_CHOICESr'   choicesr1   r2   r3   r4   rQ   r7   r$      s    

z PageViewRestrictionForm.__init__c                   @   s   e Zd ZeZdZdS )zPageViewRestrictionForm.Meta)rN   rO   groupsN)rC   rD   rE   r   modelr'   r6   r6   r6   r7   Meta   s   rV   )rC   rD   rE   r$   rV   rF   r6   r6   r4   r7   rG      s   rG   c                       sb   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                    sZ   || _ |di }| j r"|j|d< t j||g|R d|i| || _| jsV| jd= d S )Nr   comment_notifications)subscriptionr"   rX   r#   r$   rB   show_comments_toggler'   )r1   datafilesrB   rY   r2   r3   r   r4   r6   r7   r$      s    	
 zWagtailAdminPageForm.__init__c                 C   s   d| j jv S Ncomments)r5   formsets)r1   r6   r6   r7   rZ      s    z)WagtailAdminPageForm.show_comments_toggleTc                    s6   | j r(| jr(| jd | j_|r(| j  t j|dS )NrX   )commit)rZ   rY   rA   rX   saver#   )r1   r`   r4   r6   r7   ra      s    
zWagtailAdminPageForm.savec                    s,   | j d}|r"|j s"| j d= t  S r]   )r_   r:   Zmanagement_formis_validr#   )r1   r^   r4   r6   r7   rb      s    zWagtailAdminPageForm.is_validc                    sP   t   }d| jv rL|d }t|| j| jsL| dt	t
dd|i  |S )Nr)   zAThe slug '%(page_slug)s' is already in use within the parent page	page_slug)r#   r9   rA   r   Z_slug_is_availablerB   instanceZ	add_errorr   ValidationErrorr&   )r1   rA   rc   r4   r6   r7   r9      s    


zWagtailAdminPageForm.clean)NNNN)T)rC   rD   rE   r   r0   ZCheckboxInputrX   r$   propertyrZ   ra   rb   r9   rF   r6   r6   r4   r7   rW      s       
rW   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_modelsTZmove_to)r   r   r   Zpages_to_mover   z"Select a new parent for this page.r   r   )r"   rh   ri   r#   r$   r   r*   r+   r   r,   r-   r   ZAdminPageMoveChooserpkr&   r'   rS   r4   r6   r7   r$      s    zMoveForm.__init__)rC   rD   rE   r$   rF   r6   r6   r4   r7   rg      s   rg   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 )NTZadd_subpager   zParent pagez7The new page will be a child of this given parent page.)r   r   r   r   rB   )child_page_typer   r#   r$   r   r*   r   r,   r-   r   r.   r/   r&   r'   )r1   rl   r   r2   r3   r4   r6   r7   r$      s    zParentChooserForm.__init__c                 C   sh   | j d j}|| j s6ttdd| i | j	
|sdttd| j	 | d |S )NrB   zCYou do not have permission to create a page under "%(page_title)s".r8   zHYou cannot create a page of type "%(page_type)s" under "%(page_title)s".)Z	page_typer8   )rA   r=   r;   r   r<   r   re   r&   r>   rl   Zcan_create_atZget_verbose_name)r1   rB   r6   r6   r7   clean_parent_page  s$    
	z#ParentChooserForm.clean_parent_page)rC   rD   rE   r$   rm   rF   r6   r6   r4   r7   rk      s   rk   N)Zdjangor   Zdjango.confr   Zdjango.utils.translationr   r&   r   Zwagtail.adminr   Zwagtail.modelsr   r   modelsr
   Zview_restrictionsr   ZFormr   rG   rW   rg   rk   r6   r6   r6   r7   <module>   s   uC