a
    DųgŹ¾  ć                   @   sČ   d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZ G d	d
 d
eZG dd deZG dd deZdS )é    N)Śget_user_model)ŚGroup)ŚClientŚTestCaseŚoverride_settings)Śtimezone)ŚGroupApprovalTaskŚGroupPagePermissionŚLocaleŚPageŚWorkflowŚWorkflowTask)ŚPagePermissionPolicy)ŚBusinessSubIndexŚCustomPermissionPageŚCustomPermissionTesterŚ
EventIndexŚ	EventPageŚNoCreatableSubpageTypesPageŚNoSubpageTypesPageŚSingletonPageViaMaxCountc                   @   s  e Zd Zdg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d0d1 Zd2d3 Zd4d5 Zd6d7 Zed8d9d:d; Z d<d= Z!d>d? Z"d@dA Z#dBS )CŚTestPagePermissionś	test.jsonc                 C   sN   t jjdd}tjjdd}|j tjjdd” tjj||j	dd ||fS )NZtest_workflow©ŚnameZtest_task_1śEvent moderatorsé   )ŚworkflowŚtaskZ
sort_order)
r   ŚobjectsŚcreater   ŚgroupsŚaddr   Śgetr   Ztask_ptr)Śselfr   Ztask_1© r%   śb/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/tests/test_page_permissions.pyŚcreate_workflow_and_task    s    ’z+TestPagePermission.create_workflow_and_taskc                 C   s¦  t  jjdd}tjjdd}tddd}|j|d td	d
d}|j|d tjjdd}tjjdd}tjjdd}tjjdd}| 	|”}	| 	|”}
| 	|”}| 	|”}| 	|”}| 	|”}| 	|”}|  
|	 ” ” |  
|
 ” ” |  
| ” ” |  | ” ” |  | ” ” |  | ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  
| ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  
| ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  
| ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  
| ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  
| ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  
| ” ” |  
| ” ” |  | ” ” |  
| ” ” |  
| |”” |  | |”” |  
| |”” |  
| |”” |  
| |”” |  | ” ” |  
| |”” d S )Nśeventeditor@example.com©Śemailś/home/©Zurl_pathśNo creatable subpagesśno-creatable-subpages©ŚtitleŚslug©ŚinstanceśNo subpagesśno-subpagesś/home/events/christmas/ś)/home/events/tentative-unpublished-event/ś!/home/events/someone-elses-event/ś-/home/events/businessy-events/board-meetings/©r   r   r#   r   r   Ś	add_childr   r   r   Śpermissions_for_userŚassertFalseŚcan_add_subpageŚ
assertTrueŚcan_editŚ
can_deleteŚcan_publishŚcan_unpublishŚcan_publish_subpageŚcan_reorder_childrenŚcan_moveŚcan_move_to)r$   Śevent_editorŚhomepageŚno_creatable_subpages_pageŚno_subpages_pageŚchristmas_pageŚunpublished_event_pageŚsomeone_elses_event_pageŚboard_meetings_pageŚhomepage_permsŚno_creatable_subpages_permsŚno_subpages_permsŚchristmas_page_permsŚunpub_permsZsomeone_elses_event_permsŚboard_meetings_permsr%   r%   r&   Ś"test_nonpublisher_page_permissions)   s¬    ’’’’
’


’
’’’z5TestPagePermission.test_nonpublisher_page_permissionsc                 C   sH  t  jjdd}tjjdd}tddd}|j|d td	d
d}|j|d tjjdd}tjjdd}tjjdd}| 	|”}| 	|”}	| 	|”}
| 	|”}| 	|”}| 	|”}|  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  | ” ” |  
| ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  
| ” ” |  
|	 ” ” |  
|
 ” ” |  | ” ” |  | ” ” |  | |”” |  | |”” |  
| |”” |  
| |”” |  
| |”” |  | ” ” |  
| |”” d S )Nśeventmoderator@example.comr)   r+   r,   r-   r.   r/   r2   r4   r5   r6   r7   r9   r:   )r$   Śevent_moderatorrI   rJ   rK   rL   rM   rO   rP   rQ   rR   rS   rT   rU   r%   r%   r&   Śtest_publisher_page_permissions   s    ’’’’
’



’’’z2TestPagePermission.test_publisher_page_permissionsc           
      C   sÜ  t  jjdd}tjjddd ”  tjjdd}tjjdd}tjjd	d}tjjd
d}| |”}| |”}| |”}| |”}	|  	| 
” ” |  | 
” ” |  	| ” ” |  |	 ” ” |  |	 ” ” |  	| ” ” |  	| ” ” |  	| ” ” |  | ” ” |  | ” ” |  	| ” ” |  | ” ” |  	| ” ” |  	| ” ” |  | ” ” |  | ” ” |  	| ” ” |  | ” ” |  | ” ” |  	| ” ” |  	| ” ” |  |	 ” ” |  	|	 |”” |  |	 |”” d S )NrW   r)   r   Zchange_page©Zgroup__nameZpermission__codenamer+   r,   r6   r7   r8   )r   r   r#   r	   ŚfilterŚdeleter   r   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   )
r$   rX   rI   rL   rM   Zmoderator_event_pagerP   rS   rT   Zmoderator_event_permsr%   r%   r&   Ś*test_publish_page_permissions_without_editü   s\    ’’
’’


’’z=TestPagePermission.test_publish_page_permissions_without_editc                 C   s:   t  jjdd}tjjdd}| |”}|  | ” ” d S )NrW   r)   ś/home/events/r,   )r   r   r#   r   r<   r=   rA   )r$   rX   Śevents_pageŚevents_permsr%   r%   r&   Ś+test_cannot_bulk_delete_without_permissionsC  s    ’
z>TestPagePermission.test_cannot_bulk_delete_without_permissionsc                 C   sZ   t  jjdd}tjjdd}tjjdd}tjj||dd | |”}|  | 	” ” d S )	NrW   r)   r^   r,   r   r   Śbulk_delete©ŚgroupŚpageZpermission_type)
r   r   r#   r   r   r	   r    r<   r?   rA   )r$   rX   r_   Zevent_moderators_groupr`   r%   r%   r&   Ś%test_can_bulk_delete_with_permissionsL  s    ’ż
z8TestPagePermission.test_can_bulk_delete_with_permissionsc                 C   sZ   t  jjdd}tjjdd}tjjdd}tjj||dd | |”}|  | 	” ” d	S )
a  
        Having bulk_delete permission is not in itself sufficient to allow deleting pages -
        you need actual edit permission on the pages too.

        In this test the event editor is given bulk_delete permission, but since their
        only other permission is 'add', they cannot delete published pages or pages owned
        by other users, and therefore the bulk deletion cannot happen.
        r(   r)   r^   r,   śEvent editorsr   rb   rc   N)
r   r   r#   r   r   r	   r    r<   r=   rA   )r$   rH   r_   Zevent_editors_groupr`   r%   r%   r&   Ś*test_need_delete_permission_to_bulk_delete^  s    	’
z=TestPagePermission.test_need_delete_permission_to_bulk_deletec                 C   sÄ   t  jjdd}tjjdd}tjjdd}| |”}| |”}|  | ” ” |  | ” ” |  | ” ” |  | 	” ” |  | 
” ” |  | ” ” |  | ” ” |  | ” ” |  | |”” d S )Nśinactiveuser@example.comr)   r6   r,   r7   )r   r   r#   r   r<   r=   r>   r@   rA   rB   rC   rD   rE   rF   rG   )r$   ŚuserrL   rM   rS   rT   r%   r%   r&   Ś%test_inactive_user_has_no_permissionst  s     ’

z8TestPagePermission.test_inactive_user_has_no_permissionsc                 C   sŲ  t  jjdd}tjjddj}tddd}|j|d td	d
d}|j|d tjjddj}tjjdd}t	jjdd}| 
|”}| 
|”}	| 
|”}
| 
|”}| 
|”}| 
|”}|  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | ” ” |  |	 ” ” |  |
 ” ” |  | ” ” |  | |”” |  | |”” |  | |”” |  | ” ” |  | |”” d S )Nśsuperuser@example.comr)   r+   r,   r-   r.   r/   r2   r4   r5   ś/r7   r9   )r   r   r#   r   Śspecificr   r;   r   r   r   r<   r?   r>   r=   r@   rA   rB   rC   rD   rE   rF   rG   )r$   rj   rI   rJ   rK   ŚrootrM   rO   rP   rQ   rR   Z
root_permsrT   rU   r%   r%   r&   Ś#test_superuser_has_full_permissions  s    ’’’
’



’’’’’z6TestPagePermission.test_superuser_has_full_permissionsc           
      C   sŠ   t  jjdd}tjjddj}tjjddj}tjjdd}|jtdd	|d
d}|jtdd|d
d}| |”}|  	| 
|”” |  | 
|”” |  | 
|”” tjjdd}| |”}	|  |	 
|”” d S )Nrl   r)   r+   r,   rm   Śfr)Zlanguage_codezFrench pagezfrench-page)r0   r1   Ślocaler2   zFrench homepagezfrench-homepager^   )r   r   r#   r   rn   r
   r    r;   r<   r=   rG   r?   )
r$   rj   rI   ro   Z	fr_localeZfr_pageZfr_homepageZfrench_page_permsZevents_indexZevents_index_permsr%   r%   r&   Ś$test_cant_move_pages_between_localesę  s2    ż’ż’

z7TestPagePermission.test_cant_move_pages_between_localesc                 C   sV  t  jjdd}tjjdd}tjjdd}tjjdd}tjjdd}t }| |d”}| |d”}| |d	”}	| |d	”}
|  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |
” d S )Nr(   r)   r+   r,   r6   r7   r8   ŚchangeŚpublish©Śid©r   r   r#   r   r   r   Ś!instances_user_has_permission_forŚuser_has_permissionr=   r[   rw   Śexistsr?   )r$   rH   rI   rL   rM   rN   ŚpolicyŚeditable_pagesŚcan_edit_pagesŚpublishable_pagesŚcan_publish_pagesr%   r%   r&   Ś0test_editable_pages_for_user_with_add_permission	  s@    ’’’’
’’zCTestPagePermission.test_editable_pages_for_user_with_add_permissionc                 C   s¼   t  jjdd}tjjdd}tjjdd}tjjdd}tjjdd}t }| |”}|  |j|j	d 
” ” |  |j|j	d 
” ” |  |j|j	d 
” ” |  |j|j	d 
” ” d S )	Nr(   r)   r6   r,   r7   r8   ś/home/about-us/rv   )r   r   r#   r   r   r   Śexplorable_instancesr?   r[   rw   r{   r=   )r$   rH   rL   rM   rN   Śabout_us_pager|   Śexplorable_pagesr%   r%   r&   Śtest_explorable_pages1  s"    ’’
’z(TestPagePermission.test_explorable_pagesc           	      C   s¤   t  jjdd}t }| |” tjjdd}| d|j d”}t |j	 
d””}tjjdd}tjjd	d}d
d | d”D }|  |j|” |  |j|” d S )Nr(   r)   r+   r,   z /admin/api/main/pages/?child_of=z&for_explorer=1zutf-8r^   r   c                 S   s   g | ]}|  d ”qS ©r0   )r#   )Ś.0Śtr%   r%   r&   Ś
<listcomp>X  ó    zHTestPagePermission.test_explorable_pages_in_explorer.<locals>.<listcomp>Śitems)r   r   r#   r   Zforce_loginr   ŚpkŚjsonŚloadsŚcontentŚdecodeZassertInr0   ZassertNotIn)	r$   rH   ŚclientrI   Zexplorer_responseZexplorer_jsonr_   r   Zexplorable_titlesr%   r%   r&   Ś!test_explorable_pages_in_explorerI  s    
’z4TestPagePermission.test_explorable_pages_in_explorerc                 C   s   t  jjdd}t }tjjdd}tjjdd}tjjdd}| |”}|  |j|jd 	” ” |  |j|jd 	” ” |  |j|jd 	” ” d S )Nzcorporateeditor@example.comr)   r   r,   z/home/events/businessy-events/r^   rv   )
r   r   r#   r   r   r   r?   r[   rw   r{   )r$   Zcorporate_editorr|   r   Zbusinessy_eventsr_   r   r%   r%   r&   Ś6test_explorable_pages_with_permission_gap_in_hierarchy\  s    ’
zITestPagePermission.test_explorable_pages_with_permission_gap_in_hierarchyc                 C   sV  t  jjdd}tjjdd}tjjdd}tjjdd}tjjdd}t }| |d”}| |d”}| |d	”}	| |d	”}
|  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |
” d S )NrW   r)   r+   r,   r6   r7   r8   rt   ru   rv   rx   )r$   rX   rI   rL   rM   rN   r|   r}   r~   r   r   r%   r%   r&   Ś1test_editable_pages_for_user_with_edit_permissionm  s@    ’’’’’
’zDTestPagePermission.test_editable_pages_for_user_with_edit_permissionc                 C   sV  t  jjdd}tjjdd}tjjdd}tjjdd}tjjdd}t }| |d”}| |d”}| |d	”}	| |d	”}
|  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |
” d S )Nri   r)   r+   r,   r6   r7   r8   rt   ru   rv   ©r   r   r#   r   r   r   ry   rz   r=   r[   rw   r{   ©r$   rj   rI   rL   rM   rN   r|   r}   r~   r   r   r%   r%   r&   Ś%test_editable_pages_for_inactive_user  s8    ’’
’’z8TestPagePermission.test_editable_pages_for_inactive_userc                 C   sV  t  jjdd}tjjdd}tjjdd}tjjdd}tjjdd}t }| |d”}| |d”}| |d	”}	| |d	”}
|  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |
” d S )Nrl   r)   r+   r,   r6   r7   r8   rt   ru   rv   )r   r   r#   r   r   r   ry   rz   r?   r[   rw   r{   r   r%   r%   r&   Ś!test_editable_pages_for_superuser¹  s4    ’’
’z4TestPagePermission.test_editable_pages_for_superuserc                 C   sV  t  jjdd}tjjdd}tjjdd}tjjdd}tjjdd}t }| |d”}| |d”}| |d	”}	| |d	”}
|  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |j	|j
d
 ” ” |  |” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |	j	|j
d
 ” ” |  |
” d S )Nśadmin_only_user@example.comr)   r+   r,   r6   r7   r8   rt   ru   rv   r   r   r%   r%   r&   Ś(test_editable_pages_for_non_editing_userŪ  s8    ’’
’’z;TestPagePermission.test_editable_pages_for_non_editing_userc                 C   sn   t  jjdd}tjjdd}tjjdd}| |”}| |”}|  | ” ” |  | 	” ” |  | 
” ” d S )Nrl   r)   r6   r,   z/home/my-locked-page/)r   r   r#   r   r   r<   r?   Ścan_lockr=   rC   Ś
can_unlock)r$   rj   rL   Zlocked_pageŚpermsZlocked_permsr%   r%   r&   Śtest_lock_page_for_superuser’  s    

’z/TestPagePermission.test_lock_page_for_superuserc                 C   sH   t  jjdd}tjjdd}| |”}|  | ” ” |  | ” ” d S ©NrW   r)   r6   r,   )r   r   r#   r   r<   r?   r   r   ©r$   rj   rL   r   r%   r%   r&   Śtest_lock_page_for_moderator  s
    
z/TestPagePermission.test_lock_page_for_moderatorc                 C   s\   t  jjdd}tjjdd}tjjddd ”  | |”}|  | 	” ” |  
| ” ” d S )NrW   r)   r6   r,   r   Śunlock_pagerZ   )r   r   r#   r   r	   r[   r\   r<   r?   r   r=   r   r”   r%   r%   r&   Ś6test_lock_page_for_moderator_without_unlock_permission  s    ’

zITestPagePermission.test_lock_page_for_moderator_without_unlock_permissionc                 C   sz   t  jjdd}tjjdd}d|_||_t ” |_| 	”  t
jjddd ”  | |”}|  | ” ” |  | ” ” d S )	NrW   r)   r6   r,   Tr   r£   rZ   )r   r   r#   r   ŚlockedŚ	locked_byr   ŚnowŚ	locked_atŚsaver	   r[   r\   r<   r?   r   r   r”   r%   r%   r&   ŚHtest_lock_page_for_moderator_whole_locked_page_without_unlock_permission#  s    
’

z[TestPagePermission.test_lock_page_for_moderator_whole_locked_page_without_unlock_permissionc                 C   sH   t  jjdd}tjjdd}| |”}|  | ” ” |  | ” ” d S )Nr(   r)   r6   r,   ©r   r   r#   r   r<   r=   r   r   r”   r%   r%   r&   Śtest_lock_page_for_editor7  s
    
z,TestPagePermission.test_lock_page_for_editorc                 C   sH   t  jjdd}tjjdd}| |”}|  | ” ” |  | ” ” d S )Nr   r)   r6   r,   r«   r”   r%   r%   r&   Ś#test_lock_page_for_non_editing_user@  s
    
z6TestPagePermission.test_lock_page_for_non_editing_userc                 C   sd   t  jjdd}tjjdd}tjjtjjdd|dd | |”}|  | 	” ” |  
| ” ” d S )	Nr(   r)   r6   r,   rg   r   Ślockrc   )r   r   r#   r   r	   r    r   r<   r?   r   r=   r   r”   r%   r%   r&   Ś.test_lock_page_for_editor_with_lock_permissionI  s    ż
zATestPagePermission.test_lock_page_for_editor_with_lock_permissionc                 C   s:   t  jjdd}tjjdd}| |”}|  | ” ” d S r    )r   r   r#   r   r<   r=   Śpage_lockedr”   r%   r%   r&   Ś"test_page_locked_for_unlocked_pageZ  s    
z5TestPagePermission.test_page_locked_for_unlocked_pagec                 C   s   t  jjdd}tjjdd}d|_||_t ” |_| 	”  | 
|”}|  | ” ” t  jjdd}| 
|”}|  | ” ” d S ©NrW   r)   r6   r,   Tr(   )r   r   r#   r   r„   r¦   r   r§   rØ   r©   r<   r=   r°   r?   ©r$   rj   rL   r   Z
other_userZother_permsr%   r%   r&   Ś test_page_locked_for_locked_pageb  s    


z3TestPagePermission.test_page_locked_for_locked_pageT)ZWAGTAILADMIN_GLOBAL_EDIT_LOCKc                 C   s   t  jjdd}tjjdd}d|_||_t ” |_| 	”  | 
|”}|  | ” ” t  jjdd}| 
|”}|  | ” ” d S r²   )r   r   r#   r   r„   r¦   r   r§   rØ   r©   r<   r?   r°   r³   r%   r%   r&   Ś9test_page_locked_for_locked_page_with_global_lock_enabledw  s    


zLTestPagePermission.test_page_locked_for_locked_page_with_global_lock_enabledc           
      C   sŖ   |   ” \}}t jjdd}t jjdd}t jjdd}tjjdd}| ”  | ||” | |”}|  | 	” ” | |”}|  | 	” ” | |”}	|  
|	 	” ” d S )Nr(   r)   rW   rl   r6   r,   )r'   r   r   r#   r   Śsave_revisionŚstartr<   r=   r°   r?   )
r$   r   r   ŚeditorŚ	moderatorZ	superuserrL   Śmoderator_permsZsuperuser_permsŚeditor_permsr%   r%   r&   Śtest_page_locked_in_workflow  s    


z/TestPagePermission.test_page_locked_in_workflowc                 C   s   |   ” \}}t jjdd}t jjdd}tjjdd}| ”  | ||” | |”}|  | 	” ” |  
| ” ” | |”}|  
| 	” ” |  
| ” ” d S )Nr(   r)   rW   r6   r,   )r'   r   r   r#   r   r¶   r·   r<   r?   r   r=   r   )r$   r   r   rø   r¹   rL   rŗ   r»   r%   r%   r&   Śtest_page_lock_in_workflow©  s    

z-TestPagePermission.test_page_lock_in_workflowc                 C   s\   t jjdd}tddd}|j|d t jj|jd}t jjdd	}|  | |”t	” d S )
Nr+   r,   z(This page has a custom permission testerz"page-with-custom-permission-testerr/   r2   )r   r(   r)   )
r   r   r#   r   r;   r   r   ZassertIsInstancer<   r   )r$   rI   r3   re   rj   r%   r%   r&   Ś"test_custom_permission_tester_page¾  s    žz5TestPagePermission.test_custom_permission_tester_pageN)$Ś__name__Ś
__module__Ś__qualname__Śfixturesr'   rV   rY   r]   ra   rf   rh   rk   rp   rs   r   r   r   r   r   r   r   r   r   r¢   r¤   rŖ   r¬   r­   rÆ   r±   r“   r   rµ   r¼   r½   r¾   r%   r%   r%   r&   r      sB   	odG	^#(($"$			
r   c                   @   s>   e Zd ZdZdgZdd Zdd Zdd Zd	d
 Zdd Z	dS )Ś!TestPagePermissionTesterCanCopyToz(Tests PagePermissionTester.can_copy_to()r   c                 C   sL   t jjdd| _tjjdd| _tjjdd}tdd| _|j	| jd d S )Nr9   r,   r6   r+   zthere can be only oner   r2   )
r   r   r#   rO   r   Ś
event_pager   r   Śsingleton_pager;   )r$   rI   r%   r%   r&   ŚsetUpĻ  s    ’z'TestPagePermissionTesterCanCopyTo.setUpc                 C   sz   t  jjdd}| j |”}| j |”}| j |”}|  | | j 	” ”” |  | | j 	” ”” |  | | j 	” ”” d S )Nri   r)   ©
r   r   r#   rO   r<   rÄ   rÅ   r=   Ścan_copy_toŚ
get_parent©r$   rj   Zboard_meetings_page_permsZevent_page_permsZsingleton_page_permsr%   r%   r&   Ś(test_inactive_user_cannot_copy_any_pagesŪ  s    ’’zJTestPagePermissionTesterCanCopyTo.test_inactive_user_cannot_copy_any_pagesc                 C   sz   t  jjdd}| j |”}| j |”}| j |”}|  | | j 	” ”” |  | | j 	” ”” |  | | j 	” ”” d S )Nr   r)   rĒ   rŹ   r%   r%   r&   Ś/test_no_permissions_admin_cannot_copy_any_pagesģ  s    ’’zQTestPagePermissionTesterCanCopyTo.test_no_permissions_admin_cannot_copy_any_pagesc                 C   sz   t  jjdd}| j |”}| j |”}| j |”}|  | | j 	” ”” |  | | j 	” ”” |  
| | j 	” ”” d S )NrW   r)   ©r   r   r#   rO   r<   rÄ   rÅ   r?   rČ   rÉ   r=   rŹ   r%   r%   r&   Ś1test_event_moderator_cannot_copy_a_singleton_pageż  s    ’’zSTestPagePermissionTesterCanCopyTo.test_event_moderator_cannot_copy_a_singleton_pagec                 C   sz   t  jjdd}| j |”}| j |”}| j |”}|  | | j 	” ”” |  | | j 	” ”” |  
| | j 	” ”” d S )Nrl   r)   rĶ   rŹ   r%   r%   r&   Ś3test_not_even_a_superuser_can_copy_a_singleton_page  s    ’’zUTestPagePermissionTesterCanCopyTo.test_not_even_a_superuser_can_copy_a_singleton_pageN)
ræ   rĄ   rĮ   Ś__doc__rĀ   rĘ   rĖ   rĢ   rĪ   rĻ   r%   r%   r%   r&   rĆ   Ź  s   rĆ   c                   @   s   e Zd ZdgZdd ZdS )ŚTestPagePermissionModelr   c                 C   sJ   t  jjdd}tjjdd}tjj|j ” |dd}|  |j	j
d” d S )NrW   r)   z$/home/secret-plans/steal-underpants/r,   r"   rc   Zadd_page)r   r   r#   r   r	   r    r!   ŚfirstŚassertEqualZ
permissionŚcodename)r$   rj   re   Zgroup_permissionr%   r%   r&   Ś%test_create_with_permission_type_only(  s    ’z=TestPagePermissionModel.test_create_with_permission_type_onlyN)ræ   rĄ   rĮ   rĀ   rÕ   r%   r%   r%   r&   rŃ   #  s   ’rŃ   ) r   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   Zdjango.testr   r   r   Zdjango.utilsr   Zwagtail.modelsr   r	   r
   r   r   r   Z!wagtail.permission_policies.pagesr   Zwagtail.test.testapp.modelsr   r   r   r   r   r   r   r   r   rĆ   rŃ   r%   r%   r%   r&   Ś<module>   s"    (       4Y