
    BhF                     ^    d dl mZ d dlmZ d dlmZ dgZ edd       G d de             Zy	)
    )get_user_model)override_settings)ViewPermissionTests'ViewPermissionComplexMenuStaffNodeTestsTstaff)CMS_PERMISSIONCMS_PUBLIC_FORc                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)r   zI
    Test CMS_PUBLIC_FOR=staff group access and menu nodes rendering
    c                 L    | j                         }g }| j                  ||       y)z>
        All pages are INVISIBLE to an anonymous user
        N)_setup_tree_pagesassertGrantedVisibilityself	all_pagesgranteds      W/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_menu_page_viewperm_staff.py*test_public_pages_anonymous_norestrictionszRViewPermissionComplexMenuStaffNodeTests.test_public_pages_anonymous_norestrictions   s'     **,	$$Y8    c                     | j                          | j                         }| j                          g }| j                  ||       y)z;
        Anonymous sees nothing, as he is no staff
        N)_setup_user_groupsr   _setup_view_restrictionsr   r   s      r   test_public_menu_anonymous_userzGViewPermissionComplexMenuStaffNodeTests.test_public_menu_anonymous_user   s?     	!**,	%%'$$Y8r   c                 r   | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       y)z|
        simulate behaviour of group b member
        group_b_ACCESS_PAGE_AND_CHILDREN to page_b
        staff user
        )page_apage_bpage_b_apage_b_bpage_b_cpage_b_dpage_cpage_c_apage_c_bpage_d_apage_d_bpage_d_cpage_d_duser_1usernameemailzuser_1@django-cms.orgr*   /en/page_b//en/page_b/page_b_a//en/page_b/page_b_b//en/page_b/page_b_b/page_b_b_a//en/page_c//en/page_d/page_d_a/Nr   r   r   r   r   USERNAME_FIELDobjectsgetget_url_dictassertViewAllowedassertViewNotAllowedr   r   r   userurlss        r   0test_node_staff_access_page_and_children_group_1zXViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_page_and_children_group_1&   s(    	!**,	%%'
 	$$Y($K **g5!#++//6M/ND!#++///BD  + 	tM2D9t$:;TBt$:;TB!!$'H"I4PtM2D9t$:;TBr   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z
        simulate behaviour of group b member
        group_b_ACCESS_PAGE_AND_CHILDREN to page_b
        no staff user
        )r   r   r   r   r   user_1_nostaffr(   r*   zuser_1_nostaff@django-cms.orgr+   r-   r.   r/   /en/page_b/page_b_c//en/page_b/page_b_d/r0   /en/page_d/r1   Nr2   r9   s        r   9test_node_staff_access_page_and_children_group_1_no_staffzaViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_page_and_children_group_1_no_staffP   sR    	!**,	%%'
 	$$YBR$S**g5!#++//6U/VD!#++//9I/JD  +t$:;TBt$:;TB!!$'H"I4Pt$:;TBt$:;TB!!$}"5t<!!$}"5t<!!$'=">Er   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z
        simulate behaviour of group 2 member
        GROUPNAME_2 = 'group_b_b_ACCESS_CHILDREN'
        to page_b_b and user is staff
        )r   
page_b_b_a
page_b_b_b
page_b_b_cr    r!   r"   r#   r$   r%   r&   user_2r(   r*   zuser_2@django-cms.orgr+   r,   r.   r/   z/en/page_b/page_b_b/page_b_b_b/,/en/page_b/page_b_b/page_b_b_a/page_b_b_a_a/rA   r1   N)r   r   r   r   r   r3   r4   r5   r6   r8   r7   r9   s        r   'test_node_staff_access_children_group_2zOViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_children_group_2q   s;    	!**,	%%'
 	$$Y($K**g5!#++//6M/ND!#++///BD  +!!$}"5t<!!$'=">Et$EFMt$EFM!!$'U"VX\]!!$}"5t<t$:;TBr   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z
        simulate behaviour of group 2 member
        GROUPNAME_2 = 'group_b_b_ACCESS_CHILDREN'
        to page_b_b and user is no staff
        )rD   rE   rF   user_2_nostaffr(   r*   zuser_2_nostaff@django-cms.orgr+   r/   rH   r,   r-   r.   r0   rA   r1   Nr2   r9   s        r   /test_node_staff_access_children_group_2_nostaffzWViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_children_group_2_nostaff   sR    	!**,	%%'

 	$$YBR$S**g5!#++//6U/VD!#++//9I/JD  +t$EFM!!$'U"VX\]!!$}"5t<!!$'=">E!!$'=">E!!$}"5t<!!$}"5t<!!$'=">Er   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                         }| j                  ||   |       | j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z
        simulate behaviour of group 3 member
        group_b_ACCESS_PAGE_AND_DESCENDANTS to page_b
        and user is staff
        )r   r   r   r   rD   page_b_b_a_arE   rF   r   r   
page_b_d_a
page_b_d_b
page_b_d_cr    r!   r"   r#   r$   r%   r&   user_3r(   r*   zuser_3@django-cms.orgr+   r,   r-   r.   r?   r@   r/   rH   r0   rA   r1   /en/page_d/page_d_b//en/page_d/page_d_c/Nr   r   r   r   r   r3   r4   r5   r6   get_pages_rootr7   r8   r   r   r   r:   r;   urls         r   3test_node_staff_access_page_and_descendants_group_3z[ViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_page_and_descendants_group_3   s    	!**,	%%'
, 	$$Y($K**g5!#++//6M/ND!#++///BD  +!!#tCy$/tM2D9t$:;TBt$:;TBt$:;TBt$:;TBt$EFMt$RSUYZtM2D9!!$}"5t<t$:;TBt$:;TBt$:;TBr   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                         }| j                  ||   |       | j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z
        simulate behaviour of group 3 member
        group_b_ACCESS_PAGE_AND_DESCENDANTS to page_b
        user is not staff
        )r   r   r   rD   rN   rE   rF   r   r   rO   rP   rQ   user_3_nostaffr(   r*   zuser_3_nostaff@django-cms.orgr+   r,   r-   r.   r?   r@   r/   rH   r0   rA   r1   rS   rT   Nr   r   r   r   r   r3   r4   r5   r6   rV   r8   r7   rW   s         r   ;test_node_staff_access_page_and_descendants_group_3_nostaffzcViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_page_and_descendants_group_3_nostaff   s    	!**,	%%'
 	$$YBR$S**g5!#++//6U/VD!#++//9I/JD  +!!#!!$s)T2tM2D9t$:;TBt$:;TBt$:;TBt$:;TBt$EFMt$RSUYZ!!$}"5t<!!$}"5t<!!$'=">E!!$'=">E!!$'=">Er   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                         }| j                  ||   |       | j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z}
        simulate behaviour of group 4 member
        group_b_b_ACCESS_DESCENDANTS to page_b_b
        user is staff
        )r   rD   rN   rE   rF   r    r!   r"   r#   r$   r%   r&   user_4r(   r*   zuser_4@django-cms.orgr+   r,   r-   r.   r?   r@   r/   rH   r0   rA   r1   rS   rT   /en/page_d/page_d_d/NrU   rW   s         r   *test_node_staff_access_descendants_group_4zRViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_descendants_group_4  s    	!**,	%%'
 	$$Y($K**g5!#++//6M/ND!#++///BD  +!!#tCy$/!!$}"5t<!!$'=">E!!$'=">E!!$'=">E!!$'=">Et$EFMt$RSUYZtM2D9!!$}"5t<t$:;TBt$:;TBt$:;TBt$:;TBr   c                    | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                         }| j                  ||   |       | j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)z
        simulate behaviour of group 4 member
        group_b_b_ACCESS_DESCENDANTS to page_b_b
        user is no staff
        )rD   rN   rE   rF   user_4_nostaffr(   r*   zuser_4_nostaff@django-cms.orgr+   r,   r-   r.   r?   r@   r/   rH   r0   rA   r1   rS   rT   r`   Nr\   rW   s         r   2test_node_staff_access_descendants_group_4_nostaffzZViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_descendants_group_4_nostaffN  s    	!**,	%%'
 	$$YBR$S**g5!#++//6U/VD!#++//9I/JD  +!!#!!$s)T2!!$}"5t<!!$'=">E!!$'=">E!!$'=">E!!$'=">Et$EFMt$RSUYZ!!$}"5t<!!$}"5t<!!$'=">E!!$'=">E!!$'=">E!!$'=">Er   c                 :   | j                          | j                         }| j                          g d}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                         }| j                  ||   |       | j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)zr
        simulate behaviour of group b member
        group_d_ACCESS_PAGE to page_d
        user is staff
        )	r   r    r!   r"   page_dr#   r$   r%   r&   user_5r(   r*   zuser_5@django-cms.orgr+   r,   r-   r?   r@   r/   rH   r0   rA   r1   NrU   rW   s         r   #test_node_staff_access_page_group_5zKViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_page_group_5u  s    	!**,	%%'

 	$$Y($K**g5!#++//6M/ND!#++///BD  +!!#tCy$/!!$}"5t<!!$'=">E!!$'=">E!!$'=">E!!$'H"I4P!!$'U"VX\]tM2D9tM2D9t$:;TBr   c                    | j                          | j                         }| j                          dg}| j                  ||d       t	               j
                  dk(  r%t	               j                  j                  d      }n$t	               j                  j                  d      }| j                  |      }| j                         }| j                  ||   |       | j                  |d   |       | j                  |d   |       | j                  |d	   |       | j                  |d
   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       y)zq
        simulate behaviour of group b member
        group_d_ACCESS_PAGE to page_d
        nostaff user
        rf   user_5_nostaffr(   r*   zuser_5_nostaff@django-cms.orgr+   rA   r,   r-   r.   r?   r@   r/   r0   r1   rS   rT   r`   Nr\   rW   s         r   +test_node_staff_access_page_group_5_nostaffzSViewPermissionComplexMenuStaffNodeTests.test_node_staff_access_page_group_5_nostaff  s    	!**,	%%',$$YBR$S**g5!#++//6U/VD!#++//9I/JD  +!!#!!$s)T2tM2D9!!$}"5t<!!$'=">E!!$'=">E!!$'=">E!!$'=">E!!$'H"I4P!!$}"5t<tM2D9!!$'=">E!!$'=">E!!$'=">E!!$'=">Er   N)__name__
__module____qualname____doc__r   r   r<   rB   rI   rL   rY   r]   ra   rd   rh   rk    r   r   r   r      sV    
99(CTFB%CNF@4Cl-F^/Cb%FN&CP Fr   N)django.contrib.authr   django.test.utilsr   !cms.tests.test_menu_page_viewpermr   __all__r   rp   r   r   <module>ru      sG    . / A .
 nF.A nF	nFr   