U
    {®Žhs  ć                   @   s   d dl mZ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 d dlmZmZmZmZmZ d dlmZ G dd	 d	eeZd
S )é    )ŚGroupŚ
Permission)ŚHttpRequestŚHttpResponse)ŚTestCase)Śreverse)ŚGroupPagePermissionŚPage)ŚCustomCopyFormPageŚ	EventPageŚEventPageSpeakerŚPageWithExcludedCopyFieldŚ
SimplePage)ŚWagtailTestUtilsc                   @   sÄ   e Z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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/S )0ŚTestPageCopyc                 C   sx   t jjdd| _| jjtddddddd	| _| jjtd
dddddd	| _| jjtddddddd	| _|  	” | _
d S )Né   )ŚidśHello world!śhello-worldŚhelloTF©ŚtitleŚslugŚcontentŚliveŚhas_unpublished_changes©Śinstancez
Child pageś
child-pagezUnpublished Child pageśunpublished-child-page)r	   ŚobjectsŚgetŚ	root_pageŚ	add_childr   Ś	test_pageŚtest_child_pageŚtest_unpublished_child_pageŚloginŚuser©Śself© r+   śp/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/pages/test_copy_page.pyŚsetUp   s:    ū’ū’
ū’zTestPageCopy.setUpc                 C   s   | j  td| jjfd”}|  |jd” |  |d” |  |d” |  |d” |  |d” |  |d” |  |d	” |  |d
” d S )Nśwagtailadmin_pages:copy©ŚargséČ   śwagtailadmin/pages/copy.htmlz	New titlezNew slugzNew parent pagezCopy subpagesśPublish copiesZAlias)	Śclientr!   r   r$   r   ŚassertEqualŚstatus_codeŚassertTemplateUsedŚassertContains©r*   Śresponser+   r+   r,   Śtest_page_copy9   s    ’zTestPageCopy.test_page_copyc                 C   s  d| j _| j j tjjddd” | j  ”  ddt| j	j
ddd}| j td| j	j
fd	|”}|  |td
” tjjdd}tjj|| jdd | j j |” | j  ”  ddt| j	j
ddd}| j td| j	j
fd	|”}|jd }|  | ” ” |  d|j” d S )NFZwagtailadminZaccess_admin)Zcontent_type__app_labelŚcodenameśHello world 2r   ©Ś	new_titleŚnew_slugŚnew_parent_pageŚcopy_subpagesŚaliasr.   r/   Zwagtailadmin_homeZ
Publishers©ŚnameŚpublish)ŚgroupŚpageZpermission_typeŚformrA   )r(   Śis_superuserZuser_permissionsŚaddr   r    r!   ŚsaveŚstrr$   r   r4   Śpostr   ŚassertRedirectsr   Ścreater   r"   ŚgroupsŚcontextŚassertFalseZis_validZassertInŚerrors)r*   Ś	post_datar:   Z
publishersrI   r+   r+   r,   Śtest_page_copy_bad_permissionsJ   sP     ’’

ū ’  ’

ū ’
z+TestPageCopy.test_page_copy_bad_permissionsc                 C   sĘ   ddt | jjdddd}| j td| jjfd|”}|  |td| jjfd” | j ” j	dd 
” }|  |” |  |j” |  |j” |  |j| j” |  | ”  ” d	” | jtt ” d
d d S )Nr=   śhello-world-2F©r?   r@   rA   rB   Zpublish_copiesrC   r.   r/   Śwagtailadmin_explore©r   r   ś$treebeard found consistency problems©Śmsg©rM   r"   r   r4   rN   r   r$   rO   Śget_childrenŚfilterŚfirstŚassertIsNotNonerS   r   Ś
assertTruer   r5   Śownerr(   ŚcountŚanyr	   Śfind_problems©r*   rU   r:   Ś	page_copyr+   r+   r,   Śtest_page_copy_post{   s2    
ś ’ ’

 ’z TestPageCopy.test_page_copy_postc              	   C   s°   | j jtdddddddd}|j d	|j d
t| jjdddd}| j 	t
d|jfd|” tjj|d d}|  |j|j” |  |j|j” |  |j|j d”j” d S )Nz Page with exclude_fields_in_copyz page-with-exclude-fields-in-copyzCopy mezDon't copy meTF)r   r   r   Śspecial_fieldr   r   r   z 2z-2rX   r.   r/   r@   rZ   rk   )r$   r#   r   r   r   rM   r"   r   r4   rN   r   r    r!   r5   r   ŚassertNotEqualrk   Ś_metaŚ	get_fieldŚdefault)r*   Zoriginal_pagerU   ri   r+   r+   r,   Ś%test_page_with_exclude_fields_in_copy¢   s8    ś’


ś ’ ’z2TestPageCopy.test_page_with_exclude_fields_in_copyc                 C   s2  ddt | jjdddd}| j td| jjfd|”}|  |td| jjfd” | j ” j	dd	 
” }|  |” |  |j” |  |j” |  |j| j” |  | ”  ” d
” | ” j	dd	 
” }|  |” |  |j” |  |j” | ” j	dd	 
” }|  |” |  |j” |  |j” | jtt ” dd d S ©Nr=   rW   TFrX   r.   r/   rY   rZ   r   r   r   r[   r\   r^   ©r*   rU   r:   ri   Z
child_copyZunpublished_child_copyr+   r+   r,   Ś!test_page_copy_post_copy_subpagesĄ   sD    
ś ’ ’

’

 ’z.TestPageCopy.test_page_copy_post_copy_subpagesc                 C   s2  ddt | jjdddd}| j td| jjfd|”}|  |td| jjfd” | j ” j	dd	 
” }|  |” |  |j” |  |j” |  |j| j” |  | ”  ” d
” | ” j	dd	 
” }|  |” |  |j” |  |j” | ” j	dd	 
” }|  |” |  |j” |  |j” | jtt ” dd d S rq   )rM   r"   r   r4   rN   r   r$   rO   r_   r`   ra   rb   rc   r   rS   r   r5   rd   r(   re   rf   r	   rg   rr   r+   r+   r,   Ś0test_page_copy_post_copy_subpages_publish_copiesõ   sD    
ś ’ ’

’

 ’z=TestPageCopy.test_page_copy_post_copy_subpages_publish_copiesc                 C   s   ddt | jjdddd}| j td| jjfd|”}|  |td| jjfd” | jt	j
jdd ”  ” | jd	 | jtt	 ” d
d	 d S )Nr=   rW   FrX   r.   r/   rY   rZ   r\   r[   )rM   r%   r   r4   rN   r   r$   rO   rc   r	   r    r`   ra   Z
get_parentrS   rf   rg   ©r*   rU   r:   r+   r+   r,   Śtest_page_copy_post_new_parent*  s.    
ś ’ ’ž
 ’z+TestPageCopy.test_page_copy_post_new_parentc                 C   sZ   ddt | jjddd}| j td| jjfd|”}|  |jd” |  	|j
d d	d
” d S )Nr=   r   Fr>   r.   r/   r1   rI   r@   zeThis slug is already in use within the context of its parent page "Welcome to your new Wagtail site!"©rM   r"   r   r4   rN   r   r$   r5   r6   ŚassertFormErrorrR   ru   r+   r+   r,   Ś9test_page_copy_post_existing_slug_within_same_parent_pageG  s     
ū ’żzFTestPageCopy.test_page_copy_post_existing_slug_within_same_parent_pagec                 C   sZ   ddt | jjddd}| j td| jjfd|”}|  |jd” |  	|j
d	 d
d” d S )Nr=   r   TFr>   r.   r/   r1   rI   rA   z8You cannot copy a page into itself when copying subpages)rM   r%   r   r4   rN   r   r$   r5   r6   rx   rR   ru   r+   r+   r,   Ś4test_page_copy_post_and_subpages_to_same_tree_branch`  s     
ū ’żzATestPageCopy.test_page_copy_post_and_subpages_to_same_tree_branchc                 C   sR   ddt | jjddd}| j td| jjfd|”}|  |td| jjfd” d S )Nr=   r   Fr>   r.   r/   rY   )rM   r%   r   r4   rN   r   r$   rO   ru   r+   r+   r,   Ś8test_page_copy_post_existing_slug_to_another_parent_pagew  s    
ū ’ ’zETestPageCopy.test_page_copy_post_existing_slug_to_another_parent_pagec                 C   sZ   ddt | jjddd}| j td| jjfd|”}|  |jd” |  	|j
d d	d
” d S )Nr=   zhello world!Fr>   r.   r/   r1   rI   r@   uY   Enter a valid āslugā consisting of Unicode letters, numbers, underscores, or hyphens.rw   ru   r+   r+   r,   Ś test_page_copy_post_invalid_slug  s     
ū ’żz-TestPageCopy.test_page_copy_post_invalid_slugc                 C   s   ddt | jjddd}| j td| jjfd|”}|  |td| jjfd” | j ” j|d d	 	” }|  
|” |  |j|d ” d S )
Nu   Hello wÉĖldu   hello-wÉĖldFr>   r.   r/   rY   r@   rZ   )rM   r$   r   r4   rN   r   rO   r_   r`   ra   rb   r5   r   rh   r+   r+   r,   Ś&test_page_copy_post_valid_unicode_slug¢  s$    
ū ’ ’’
z3TestPageCopy.test_page_copy_post_valid_unicode_slugc                 C   sn   d| j _| j j tjjdd” | j  ”  | j t	d| j
jfd”}|  |jd” |  |d” |  |d” d S )	NFŚEditorsrD   r.   r/   r1   r2   r3   )r(   rJ   rQ   rK   r   r    r!   rL   r4   r   r$   r   r5   r6   r7   ZassertNotContainsr9   r+   r+   r,   Ś$test_page_copy_no_publish_permission¼  s    ’
’z1TestPageCopy.test_page_copy_no_publish_permissionc                 C   s8  d| j _| j j tjjdd” | j  ”  ddt| j	j
dddd}| j td| jj
fd	|”}|  |td
| j	j
fd	” | j	 ” jdd ” }|  |” |  |j” |  |j| j ” |  | ”  ” d” | ” jdd ” }|  |” |  |j” | ” jdd ” }|  |” |  |j” | jtt ” dd d S )NFr~   rD   r=   rW   TrX   r.   r/   rY   rZ   r   r   r   r[   r\   )r(   rJ   rQ   rK   r   r    r!   rL   rM   r"   r   r4   rN   r   r$   rO   r_   r`   ra   rb   rS   r   r5   rd   re   rf   r	   rg   rr   r+   r+   r,   ŚFtest_page_copy_no_publish_permission_post_copy_subpages_publish_copiesŠ  sH    ’

ś ’ ’

’

 ’zSTestPageCopy.test_page_copy_no_publish_permission_post_copy_subpages_publish_copiesc              	      s^    fdd}   d|”   j td jjfd”}W 5 Q R X   |jd”   |jd” d S )Nc                    s"      | t”    |jt” tdS ©NzOverridden!©ZassertIsInstancer   Zspecificr   r   ©ŚrequestrH   r)   r+   r,   Ś	hook_func  s    z:TestPageCopy.test_before_copy_page_hook.<locals>.hook_funcŚbefore_copy_pager.   r/   r1   ó   Overridden!)	Śregister_hookr4   r!   r   r$   r   r5   r6   r   )r*   r   r:   r+   r)   r,   Śtest_before_copy_page_hook  s    ’z'TestPageCopy.test_before_copy_page_hookc              	      s    fdd}   d|”< ddt jjdddd} j td jjfd	|”}W 5 Q R X   |j	d
”   |j
d”   tjjdd ” ” d S )Nc                    s"      | t”    |jt” tdS r   r   r   r)   r+   r,   r     s    z?TestPageCopy.test_before_copy_page_hook_post.<locals>.hook_funcr   r=   rW   FrX   r.   r/   r1   r   ©r   )r   rM   r"   r   r4   rN   r   r$   r5   r6   r   rS   r	   r    r`   Śexists©r*   r   rU   r:   r+   r)   r,   Śtest_before_copy_page_hook_post  s     
ś ’z,TestPageCopy.test_before_copy_page_hook_postc              	      s    fdd}   d|”< ddt jjdddd} j td jjfd	|”}W 5 Q R X   |j	d
”   |j
d”   tjjdd ” ” d S )Nc                    s0      | t”    |jt”    |jt” tdS r   r   )r   rH   Śnew_pager)   r+   r,   r   6  s    z9TestPageCopy.test_after_copy_page_hook.<locals>.hook_funcZafter_copy_pager=   rW   FrX   r.   r/   r1   r   r   )r   rM   r"   r   r4   rN   r   r$   r5   r6   r   rc   r	   r    r`   r   r   r+   r)   r,   Śtest_after_copy_page_hook5  s     
ś ’z&TestPageCopy.test_after_copy_page_hookc                 C   sŹ   ddt | jjdddd}| j td| jjfd|”}|  |td| jjfd” | j ” j	dd	}|  
|j| jj” |  |j” |  |j” |  
|j| j” |  
| ”  ” d
” | jtt ” dd d S )Nr=   rW   FTrX   r.   r/   rY   rZ   r   r[   r\   )rM   r"   r   r4   rN   r   r$   rO   r_   r!   r5   Śalias_ofŚpage_ptrrc   r   rS   r   rd   r(   re   rf   r	   rg   rh   r+   r+   r,   Śtest_page_copy_alias_postP  s2    
ś ’ ’
 ’z&TestPageCopy.test_page_copy_alias_postc                 C   sZ  ddt | jjdddd}| j td| jjfd|”}|  |td| jjfd” | j ” j	dd	}|  
|j| jj” |  |j” |  |j” |  
|j| j” |  
| ”  ” d
” | ” jdd	 ” }|  |” |  
|j| jj” |  |j” |  |j” | ” jdd	 ” }|  |” |  
|j| jj” |  |j” |  |j” | jtt ” dd d S rq   )rM   r"   r   r4   rN   r   r$   rO   r_   r!   r5   r   r   rc   r   rS   r   rd   r(   re   r`   ra   rb   r%   r&   rf   r	   rg   rr   r+   r+   r,   Ś'test_page_copy_alias_post_copy_subpagesx  sN    
ś ’ ’
’
 ’
 ’z4TestPageCopy.test_page_copy_alias_post_copy_subpagesc                 C   s°   | j jtddddddd| _d| j_| jj tj	j
dd	” | j ”  tj	jd
dj| jd | jj| jjt| jjdddd}| j td| jjgd|”}|  |jd” d S )NzDestination pagezdestination-pager   TFr   r   Z
ModeratorsrD   Zpublish_page)Zpermission__codename)rH   rX   r.   r/   i.  )r"   r#   r   Zdestination_pager(   rJ   rQ   rK   r   r    r!   rL   r   r`   Śupdater%   r   r   rM   r   r4   rN   r   r5   r6   ru   r+   r+   r,   Ś;test_page_copy_alias_post_without_source_publish_permission²  s6    ū’
’
śžzHTestPageCopy.test_page_copy_alias_post_without_source_publish_permissionc                 C   sĪ   t dddddd}| jj|d |j tdd	d
” | ”  ”  ddt| jj	dddd}| j
 td|j	gd|” t j ” }| j
 td|j	gd”}|jd j}| ”  ”  |  |j ” j|j ” j” dS )zn
        Test that a page with orderables can be copied and the translation
        keys are updated.
        zMoon Landingzthe moonŚpublicz
free on TVz
1969-07-20)r   ŚlocationZaudienceZcostZ	date_fromr   ZNeilZ	Armstrong)Z
first_nameŚ	last_namezNew Moon landingzmoon-landing-reduxFrX   r.   r/   zwagtailadmin_pages:editrI   N)r   r"   r#   ZspeakersrK   r   Zsave_revisionrF   rM   r   r4   rN   r   r    Ślastr!   rR   r   rl   ra   Ztranslation_key)r*   Z
event_pagerU   r   r:   Znew_page_on_edit_formr+   r+   r,   Ś.test_copy_page_with_unique_uuids_in_orderablesŁ  sH    ūž’
ś ’
’

žz;TestPageCopy.test_copy_page_with_unique_uuids_in_orderablesc                 C   sP   | j jtdddddd}| j td|jfd”}|  |jd	” |  	|d
” d S )Nr   z	copy-formTF)r   r   r   r   r   r.   r/   r1   zcopy-form-2)
r"   r#   r
   r4   r!   r   r   r5   r6   r8   )r*   Zcustom_copy_form_pager:   r+   r+   r,   Ś$test_page_copy_with_custom_copy_form  s    ü’	’z1TestPageCopy.test_page_copy_with_custom_copy_formN)Ś__name__Ś
__module__Ś__qualname__r-   r;   rV   rj   rp   rs   rt   rv   ry   rz   r{   r|   r}   r   r   r   r   r   r   r   r   r   r   r+   r+   r+   r,   r      s.   '1'55<(:'6r   N)Zdjango.contrib.auth.modelsr   r   Zdjango.httpr   r   Zdjango.testr   Zdjango.urlsr   Zwagtail.modelsr   r	   Zwagtail.test.testapp.modelsr
   r   r   r   r   Zwagtail.test.utilsr   r   r+   r+   r+   r,   Ś<module>   s   