Ë
    ¸2Úi:ê  ã                   óx  — d dl Z d dl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 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 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 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#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)  e«       Z*e*jV                  jX                  Z-e*jV                  j\                  Z/ G d„ de&«      Z0 G d„ de&«      Z1 G d„ d e&«      Z2 G d!„ d"e&«      Z3 G d#„ d$e&«      Z4 G d%„ d&e«      Z5 G d'„ d(e«      Z6 G d)„ d*e«      Z7 G d+„ d,e«      Z8y)-é    N)Úget_user_model)ÚAnonymousUser)ÚContentType)ÚQuerySet)ÚTestCase)Úget_perms_for_model)ÚObjectPermissionChecker)Ú!get_user_permission_full_codename)Úassign)Úassign_perm)Úremove_perm)Ú	get_perms)Úget_user_perms)Úget_group_perms)Úget_users_with_perms)Úget_groups_with_perms)Úget_objects_for_user)Úget_objects_for_group)ÚMixedContentTypeError)ÚNotUserNorGroup)ÚWrongAppError)ÚMultipleIdentityAndObjectError)ÚCharPKModelÚChildTestModelÚUUIDPKModel)ÚObjectPermissionTestCase)ÚGroupÚ
Permissionc                   ó   — e Zd Zd„ Zy)ÚShortcutsTestsc                 óæ  — t         j                  dk  rdnd}| j                  t        | j                  «      j                  «       |«       | j                  t        t        | j                  «      «      t        t        t        «      «      k(  «       | j                  t        t        «      j                  «       |«       d}| j                  t        t        |«      j                  «       «      t        t        t        «      j                  «       «      «       t        «       }| j                  t        t        |«      j                  «       «      t        t        |«      j                  «       «      «       y )N©é   é   é   é   zcontenttypes.ContentType)ÚdjangoÚVERSIONÚassertEqualr   ÚuserÚcountÚ
assertTrueÚlistÚUserr   ÚsortedÚvalues_listr   )ÚselfÚexpected_perms_amountÚ	model_strÚobjs       ú\/var/www/html/acx/venv/lib/python3.12/site-packages/guardian/testapp/tests/test_shortcuts.pyÚtest_get_perms_for_modelz'ShortcutsTests.test_get_perms_for_model'   s  € Ü%+§^¡^°fÒ%<¡À!ÐØ×ÑÔ,¨T¯Y©YÓ7×=Ñ=Ó?ÐAVÔWØ�‰œÔ0°·±Ó;Ó<ÜÔ0´Ó6Ó7ñ8ô 	9à×ÑÔ,¬ZÓ8×>Ñ>Ó@ÐBWÔXà.ˆ	Ø×ÑÜÔ& yÓ1×=Ñ=Ó?Ó@ÜÔ&¤{Ó3×?Ñ?ÓAÓBô	Dô ‹mˆØ×ÑÜÔ& yÓ1×=Ñ=Ó?Ó@ÜÔ& sÓ+×7Ñ7Ó9Ó:õ	<ó    N)Ú__name__Ú
__module__Ú__qualname__r6   © r7   r5   r    r    %   s   „ ó<r7   r    c                   ó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)ÚAssignPermTestz?
    Tests permission assigning for user/group and object.
    c                 óT   — | j                  t        t        dd| j                  ¬«       y ©NÚchange_objectzNot a Model)ÚpermÚuser_or_groupr4   )ÚassertRaisesr   r   Úctype©r1   s    r5   Útest_not_modelzAssignPermTest.test_not_model=   ó&   € Ø×Ñœ/¬;Ø.Ø(5Ø"Ÿj™jð 	õ 	*r7   c                 óR   — | j                  t        t        d| j                  ¬«       y ©NÚchange_site)rA   rB   )rC   Ú
ValueErrorr   r*   rE   s    r5   Útest_global_wrong_permz%AssignPermTest.test_global_wrong_permC   ó#   € Ø×Ñœ*¤kØ,Ø(,¯	©	ð 	õ 	3r7   c                 ó&  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j	                  d«      | j                  | j                  «       | j                  | j                  j                  d| j                  «      «       | j                  | j                  j                  d| j                  «      «       | j                  | j                  j                  d| j                  «      «       y ©NÚadd_contenttypeÚchange_contenttypeÚdelete_contenttype)r   r*   rD   ÚgroupÚget_permissionr,   Úhas_permrE   s    r5   Útest_user_assign_permz$AssignPermTest.test_user_assign_permH   s²   € ÜÐ% t§y¡y°$·*±*Ô=ÜÐ(¨$¯*©*°d·j±jÔAÜ�D×'Ñ'Ð(<Ó=¸t¿y¹yÈ$Ï*É*ÔUØ�‰˜Ÿ	™	×*Ñ*Ð+<¸d¿j¹jÓIÔJØ�‰˜Ÿ	™	×*Ñ*Ð+?ÀÇÁÓLÔMØ�‰˜Ÿ	™	×*Ñ*Ð+?ÀÇÁÓLÕMr7   c                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       t	        | j                  «      }| j                  |j                  d| j                  «      «       | j                  |j                  d| j                  «      «       | j                  |j                  d| j                  «      «       y rO   )r   rS   rD   rT   r	   r,   rU   ©r1   Úchecks     r5   Útest_group_assign_permz%AssignPermTest.test_group_assign_permP   s®   € ÜÐ% t§z¡z°4·:±:Ô>ÜÐ(¨$¯*©*°d·j±jÔAÜ�D×'Ñ'Ð(<Ó=¸t¿z¹zÈ4Ï:É:ÔVä'¨¯
©
Ó3ˆØ�‰˜Ÿ™Ð'8¸$¿*¹*ÓEÔFØ�‰˜Ÿ™Ð';¸T¿Z¹ZÓHÔIØ�‰˜Ÿ™Ð';¸T¿Z¹ZÓHÕIr7   c                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j	                  d«      | j                  | j                  «       | j                  D ]ƒ  }| j                  | j                  j                  d|«      «       | j                  | j                  j                  d|«      «       | j                  | j                  j                  d|«      «       Œ… y rO   )r   r*   Ú
ctype_qsetrS   rT   r,   rU   ©r1   r4   s     r5   Útest_user_assign_perm_querysetz-AssignPermTest.test_user_assign_perm_querysetZ   s»   € ÜÐ% t§y¡y°$·/±/ÔBÜÐ(¨$¯*©*°d·o±oÔFÜ�D×'Ñ'Ð(<Ó=¸t¿y¹yÈ$Ï/É/ÔZØ—?‘?ò 	KˆCØ�O‰O˜DŸI™I×.Ñ.Ð/@À#ÓFÔGØ�O‰O˜DŸI™I×.Ñ.Ð/CÀSÓIÔJØ�O‰O˜DŸI™I×.Ñ.Ð/CÀSÓIÕJñ	Kr7   c                 óú  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       t	        | j                  «      }| j                  D ]e  }| j                  |j                  d|«      «       | j                  |j                  d|«      «       | j                  |j                  d|«      «       Œg y rO   )r   rS   r\   rT   r	   r,   rU   ©r1   rY   r4   s      r5   Útest_group_assign_perm_querysetz.AssignPermTest.test_group_assign_perm_querysetc   s·   € ÜÐ% t§z¡z°4·?±?ÔCÜÐ(¨$¯*©*°d·o±oÔFÜ�D×'Ñ'Ð(<Ó=¸t¿z¹zÈ4Ï?É?Ô[ä'¨¯
©
Ó3ˆØ—?‘?ò 	GˆCØ�O‰O˜EŸN™NÐ+<¸cÓBÔCØ�O‰O˜EŸN™NÐ+?ÀÓEÔFØ�O‰O˜EŸN™NÐ+?ÀÓEÕFñ	Gr7   c                 ó`  — t        d| j                  «      }t        | j                  d«      | j                  «       | j	                  | j                  j                  d«      «       | j	                  | j                  j                  d«      «       | j	                  t        |t        «      «       y )Núcontenttypes.change_contenttyperR   úcontenttypes.delete_contenttype)r   r*   rT   rS   r,   rU   Ú
isinstancer   ©r1   rA   s     r5   Útest_user_assign_perm_globalz+AssignPermTest.test_user_assign_perm_globaln   sx   € ÜÐ<¸d¿i¹iÓHˆÜ�D×'Ñ'Ð(<Ó=¸t¿z¹zÔJØ�‰˜Ÿ	™	×*Ñ*Ð+LÓMÔNØ�‰˜Ÿ	™	×*Ñ*Ð+LÓMÔNØ�‰œ
 4¬Ó4Õ5r7   c                 óÂ   — t        d| j                  «      }| j                  | j                  j	                  d«      «       | j                  t        |t        «      «       y ©Nrc   )r   rS   r,   r*   rU   re   r   rf   s     r5   Útest_group_assign_perm_globalz,AssignPermTest.test_group_assign_perm_globalu   sB   € ÜÐ<¸d¿j¹jÓIˆà�‰˜Ÿ	™	×*Ñ*Ð+LÓMÔNØ�‰œ
 4¬Ó4Õ5r7   c                 ó@  — t         j                  j                  dt        j                  j	                  | j
                  «      ¬«       t        d| j                  | j
                  «       | j                  | j                  j                  d| j
                  «      «       y )Nzcontenttype.reorder)ÚcodenameÚcontent_typez contenttypes.contenttype.reorder)
r   ÚobjectsÚcreater   Úget_for_modelrD   r   r*   r,   rU   rE   s    r5   Útest_assign_perm_with_dotsz)AssignPermTest.test_assign_perm_with_dots{   so   € Ü×Ñ×!Ñ!Ø*Ü$×,Ñ,×:Ñ:¸4¿:¹:ÓFð 	"ô 	
ô
 	Ð6¸¿	¹	À4Ç:Á:ÔNØ�‰˜Ÿ	™	×*Ñ*Ð+MÈtÏzÉzÓZÕ[r7   c                 ó>  — t        j                  d¬«      5 }t        j                  d«       t        d| j                  «       | j                  t        |«      d«       | j                  t        |d   j                  t        «      «       d d d «       y # 1 sw Y   y xY w)NT)ÚrecordÚalwaysrc   r$   r   )ÚwarningsÚcatch_warningsÚsimplefilterr   rS   r)   Úlenr,   re   ÚmessageÚDeprecationWarning)r1   Úwarnss     r5   Útest_deprecation_warningz'AssignPermTest.test_deprecation_warning„   sz   € Ü×$Ñ$¨DÔ1ð 	N°UÜ×!Ñ! (Ô+ÜÐ4°d·j±jÔAØ×ÑœS ›Z¨Ô+Ø�O‰OœJ u¨Q¡x×'7Ñ'7Ô9KÓLÔM÷		N÷ 	Nñ 	Nús   —A3BÂBc                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j	                  d«      | j                  | j                  «       | j                  D ]ƒ  }| j                  | j                  j                  d|«      «       | j                  | j                  j                  d|«      «       | j                  | j                  j                  d|«      «       Œ… y)ze
        Test that one is able to assign permissions for a list of objects
        to a user
        rP   rQ   rR   N)r   r*   Ú
ctype_listrS   rT   r,   rU   r]   s     r5   Útest_user_assign_perm_listz)AssignPermTest.test_user_assign_perm_list‹   s½   € ô
 	Ð% t§y¡y°$·/±/ÔBÜÐ(¨$¯*©*°d·o±oÔFÜ�D×'Ñ'Ð(<Ó=¸t¿y¹yÈ$Ï/É/ÔZØ—?‘?ò 	KˆCØ�O‰O˜DŸI™I×.Ñ.Ð/@À#ÓFÔGØ�O‰O˜DŸI™I×.Ñ.Ð/CÀSÓIÔJØ�O‰O˜DŸI™I×.Ñ.Ð/CÀSÓIÕJñ	Kr7   c                 óú  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       t	        | j                  «      }| j                  D ]e  }| j                  |j                  d|«      «       | j                  |j                  d|«      «       | j                  |j                  d|«      «       Œg y)zf
        Test that one is able to assign permissions for a list of
        objects to a group
        rP   rQ   rR   N)r   rS   r~   rT   r	   r,   rU   r`   s      r5   Útest_group_assign_perm_listz*AssignPermTest.test_group_assign_perm_list˜   s¹   € ô
 	Ð% t§z¡z°4·?±?ÔCÜÐ(¨$¯*©*°d·o±oÔFÜ�D×'Ñ'Ð(<Ó=¸t¿z¹zÈ4Ï?É?Ô[ä'¨¯
©
Ó3ˆØ—?‘?ò 	GˆCØ�O‰O˜EŸN™NÐ+<¸cÓBÔCØ�O‰O˜EŸN™NÐ+?ÀÓEÔFØ�O‰O˜EŸN™NÐ+?ÀÓEÕFñ	Gr7   N)r8   r9   r:   Ú__doc__rF   rL   rV   rZ   r^   ra   rg   rj   rq   r|   r   r�   r;   r7   r5   r=   r=   8   sK   „ ñò*ò3ò
NòJòKò	Gò6ò6ò\òNòKóGr7   r=   c                   ó@   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )Ú MultipleIdentitiesOperationsTestzD
    Tests assignment of permission to multiple users or groups
    c                 óF  •— t         ‰| �  «        t        j                  j	                  d¬«      t        j                  j	                  d¬«      gx| _        \  }}t        j                  j                  d¬«      t        j                  j                  d¬«      gx| _        \  }}|j                  j                  |«       |j                  j                  |«       t        j                  j                  d¬«      | _        t        j                  j                  «       | _        y )NÚjim©ÚusernameÚbobÚjimgroup©ÚnameÚbobgroupr   )ÚsuperÚsetUpr.   rn   Úcreate_userÚ
users_listr   ro   Úgroups_listÚuser_setÚaddÚexcludeÚusers_qsÚallÚ	groups_qs)r1   r†   r‰   Ú	jim_groupÚ	bob_groupÚ	__class__s        €r5   r�   z&MultipleIdentitiesOperationsTest.setUp¬   sã   ø€ Ü‰‰Œä�L‰L×$Ñ$¨eÐ$Ó4Ü�L‰L×$Ñ$¨eÐ$Ó4ð&
ð 	
ˆŒ™(˜#˜sô
 �M‰M× Ñ  jÐ Ó1Ü�M‰M× Ñ  jÐ Ó1ð3
ð 	
ˆÔÑ/˜9 ið 	×Ñ×Ñ˜sÔ#Ø×Ñ×Ñ˜sÔ#ÜŸ™×,Ñ,°oÐ,ÓFˆŒÜŸ™×*Ñ*Ó,ˆ�r7   c                 ót  — t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       | j                  D ]X  }| j                  |j                  d| j                  «      «       | j                  |j                  d| j                  «      «       ŒZ y ©NrP   rR   )r   r–   rD   rT   r‘   r,   rU   ©r1   r*   s     r5   Ú"test_assign_to_many_users_querysetzCMultipleIdentitiesOperationsTest.test_assign_to_many_users_queryset»   s„   € ÜÐ% t§}¡}°d·j±jÔAÜ�D×'Ñ'Ð(<Ó=¸t¿}¹}ÈdÏjÉjÔYØ—O‘Oò 	MˆDØ�O‰O˜DŸM™MÐ*;¸T¿Z¹ZÓHÔIØ�O‰O˜DŸM™MÐ*>ÀÇ
Á
ÓKÕLñ	Mr7   c                 ót  — t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       | j                  D ]X  }| j	                  |j                  d| j                  «      «       | j	                  |j                  d| j                  «      «       ŒZ y r�   )r   r‘   rD   rT   r,   rU   rž   s     r5   Útest_assign_to_many_users_listz?MultipleIdentitiesOperationsTest.test_assign_to_many_users_listÂ   s‡   € ÜÐ% t§¡¸¿
¹
ÔCÜ�D×'Ñ'Ð(<Ó=¸t¿¹ÐPT×PZÑPZÔ[Ø—O‘Oò 	MˆDØ�O‰O˜DŸM™MÐ*;¸T¿Z¹ZÓHÔIØ�O‰O˜DŸM™MÐ*>ÀÇ
Á
ÓKÕLñ	Mr7   c                 ót  — t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       | j                  D ]X  }| j                  |j                  d| j                  «      «       | j                  |j                  d| j                  «      «       ŒZ y r�   )r   r˜   rD   rT   r‘   r,   rU   rž   s     r5   Ú#test_assign_to_many_groups_querysetzDMultipleIdentitiesOperationsTest.test_assign_to_many_groups_querysetÉ   s„   € ÜÐ% t§~¡~°t·z±zÔBÜ�D×'Ñ'Ð(<Ó=¸t¿~¹~ÈtÏzÉzÔZØ—O‘Oò 	MˆDØ�O‰O˜DŸM™MÐ*;¸T¿Z¹ZÓHÔIØ�O‰O˜DŸM™MÐ*>ÀÇ
Á
ÓKÕLñ	Mr7   c                 ót  — t        d| j                  | j                  «       t        | j                  d«      | j                  | j                  «       | j                  D ]X  }| j                  |j                  d| j                  «      «       | j                  |j                  d| j                  «      «       ŒZ y r�   )r   r’   rD   rT   r‘   r,   rU   rž   s     r5   Útest_assign_to_many_groups_listz@MultipleIdentitiesOperationsTest.test_assign_to_many_groups_listÐ   s‹   € ÜÐ% t×'7Ñ'7¸¿¹ÔDÜ�D×'Ñ'Ð(<Ó=¸t×?OÑ?OÐQU×Q[ÑQ[Ô\Ø—O‘Oò 	MˆDØ�O‰O˜DŸM™MÐ*;¸T¿Z¹ZÓHÔIØ�O‰O˜DŸM™MÐ*>ÀÇ
Á
ÓKÕLñ	Mr7   c                 ó0  — | j                  t        «      5  t        d| j                  | j                  «       d d d «       | j                  t        «      5  t        d| j
                  | j                  «       d d d «       y # 1 sw Y   ŒIxY w# 1 sw Y   y xY w)NrP   )rC   r   r   r‘   r\   r–   rE   s    r5   Ú(test_assign_to_multiple_identity_and_objzIMultipleIdentitiesOperationsTest.test_assign_to_multiple_identity_and_obj×   s‚   € Ø×ÑÔ=Ó>ñ 	MÜÐ)¨4¯?©?¸D¿O¹OÔL÷	Mà×ÑÔ=Ó>ñ 	KÜÐ)¨4¯=©=¸$¿/¹/ÔJ÷	Kð 	K÷	Mð 	Mú÷	Kð 	Kús   –"B Á"BÂ B	ÂB)r8   r9   r:   r‚   r�   rŸ   r¡   r£   r¥   r§   Ú__classcell__)r›   s   @r5   r„   r„   ¨   s+   ø„ ñô-òMòMòMòMöKr7   r„   c                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚRemovePermTestz+
    Tests object permissions removal.
    c                 óT   — | j                  t        t        dd| j                  ¬«       y r?   )rC   r   r   rD   rE   s    r5   rF   zRemovePermTest.test_not_modelã   rG   r7   c                 óR   — | j                  t        t        d| j                  ¬«       y rI   )rC   rK   r   r*   rE   s    r5   rL   z%RemovePermTest.test_global_wrong_permé   rM   r7   c                 óò   — t        d| j                  | j                  «       t        d| j                  | j                  «       | j	                  | j                  j                  d| j                  «      «       y ©NrQ   )r   r*   rD   r   ÚassertFalserU   rE   s    r5   Útest_user_remove_permz$RemovePermTest.test_user_remove_permî   sP   € äÐ(¨$¯)©)°T·Z±ZÔ@ÜÐ(¨$¯)©)°T·Z±ZÔ@Ø×Ñ˜Ÿ™×+Ñ+Ð,@À$Ç*Á*ÓMÕNr7   c                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t	        | j                  «      }| j                  |j                  d| j                  «      «       y r®   )r   rS   rD   r   r	   r¯   rU   rX   s     r5   Útest_group_remove_permz%RemovePermTest.test_group_remove_permô   sX   € äÐ(¨$¯*©*°d·j±jÔAÜÐ(¨$¯*©*°d·j±jÔAä'¨¯
©
Ó3ˆØ×Ñ˜Ÿ™Ð(<¸d¿j¹jÓIÕJr7   c                 ó   — t        d| j                  | j                  «       t        d| j                  | j                  «       | j                  D ]-  }| j	                  | j                  j                  d|«      «       Œ/ y r®   )r   r*   r\   r   r¯   rU   r]   s     r5   Útest_user_remove_perm_querysetz-RemovePermTest.test_user_remove_perm_querysetü   sa   € ÜÐ(¨$¯)©)°T·_±_ÔEÜÐ(¨$¯)©)°T·_±_ÔEØ—?‘?ò 	LˆCØ×Ñ˜TŸY™Y×/Ñ/Ð0DÀcÓJÕKñ	Lr7   c                 ó‚  — t        d| j                  | j                  «       t        d| j                  | j                  j	                  «       «       | j                  t        | j                  j	                  «       «      g «       | j                  D ]-  }| j                  | j                  j                  d|«      «       Œ/ y r®   )	r   r*   r\   r   Únoner)   r-   r,   rU   r]   s     r5   Ú$test_user_remove_perm_empty_querysetz3RemovePermTest.test_user_remove_perm_empty_queryset  sŠ   € ÜÐ(¨$¯)©)°T·_±_ÔEÜÐ(¨$¯)©)°T·_±_×5IÑ5IÓ5KÔLà×Ñœ˜dŸo™o×2Ñ2Ó4Ó5°rÔ:Ø—?‘?ò 	KˆCØ�O‰O˜DŸI™I×.Ñ.Ð/CÀSÓIÕJñ	Kr7   c                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t	        | j                  «      }| j                  D ]#  }| j                  |j                  d|«      «       Œ% y r®   )r   rS   r\   r   r	   r¯   rU   r`   s      r5   Útest_group_remove_perm_querysetz.RemovePermTest.test_group_remove_perm_queryset
  si   € ÜÐ(¨$¯*©*°d·o±oÔFÜÐ(¨$¯*©*°d·o±oÔFä'¨¯
©
Ó3ˆØ—?‘?ò 	HˆCØ×Ñ˜UŸ^™^Ð,@À#ÓFÕGñ	Hr7   c                 ó–  — d}| j                  d«      }t        || j                  «       t        || j                  «       t        || j                  «       t        || j                  «       | j	                  | j                  j                  |«      «       | j	                  | j                  j                  |j                  «      «       y )Nrc   rR   )rT   r   r*   r   r¯   rU   rl   )r1   rA   Úperm_objs      r5   Útest_user_remove_perm_globalz+RemovePermTest.test_user_remove_perm_global  s�   € à0ˆØ×&Ñ&Ð';Ó<ˆÜ�D˜$Ÿ)™)Ô$Ü�H˜dŸi™iÔ(Ü�D˜$Ÿ)™)Ô$Ü�H˜dŸi™iÔ(Ø×Ñ˜Ÿ™×+Ñ+¨DÓ1Ô2Ø×Ñ˜Ÿ™×+Ñ+¨H×,=Ñ,=Ó>Õ?r7   c                 ó4  — d}t        || j                  «       t        || j                  «       |j                  d«      \  }}t        j
                  j                  ||¬«      }| j                  || j                  j                  j                  «       v «       y )Nrc   ú.)rl   Úcontent_type__app_label)
r   rS   r   Úsplitr   rn   Úgetr¯   Úpermissionsr—   )r1   rA   Ú	app_labelrl   r»   s        r5   Útest_group_remove_perm_globalz,RemovePermTest.test_group_remove_perm_global  s|   € à0ˆÜ�D˜$Ÿ*™*Ô%Ü�D˜$Ÿ*™*Ô%Ø"Ÿj™j¨›oÑˆ	�8Ü×%Ñ%×)Ñ)°8ØBKð *ó Mˆà×Ñ˜ T§Z¡Z×%;Ñ%;×%?Ñ%?Ó%AÐAÕBr7   N)r8   r9   r:   r‚   rF   rL   r°   r²   r´   r·   r¹   r¼   rÄ   r;   r7   r5   rª   rª   Þ   s;   „ ñò*ò3ò
OòKòLòKòHò	@óCr7   rª   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚGetPermsTestzc
    Tests get_perms function (already done at core tests but left here as a
    placeholder).
    c                 óR   — | j                  t        t        d | j                  ¬«       y )N)rB   r4   )rC   r   r   rD   rE   s    r5   rF   zGetPermsTest.test_not_model.  s#   € Ø×Ñœ/¬9Ø(,Ø"Ÿj™jð 	õ 	*r7   c                 óÌ   — d}|D ]#  }t        d| j                  | j                  «       Œ% t        | j                  | j                  «      }|D ]  }| j	                  ||v «       Œ y )N©rQ   rQ   )r   r*   rD   r   r,   )r1   Úperms_to_assignrA   Úpermss       r5   Ú	test_userzGetPermsTest.test_user3  sb   € Ø1ˆà#ò 	EˆDÜÐ,¨d¯i©i¸¿¹ÕDð	Eô ˜$Ÿ)™) T§Z¡ZÓ0ˆØ#ò 	+ˆDØ�O‰O˜D E˜MÕ*ñ	+r7   N)r8   r9   r:   r‚   rF   rÌ   r;   r7   r5   rÆ   rÆ   (  s   „ ñò
*ó
+r7   rÆ   c                   ó‚   — 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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGetUsersWithPermsTestz.
    Tests get_users_with_perms function.
    c                 óX  — t         j                  j                  dd¬«      | _        t         j                  j                  dd¬«      | _        t
        j                  j                  d¬«      | _        t
        j                  j                  d¬«      | _        t
        j                  j                  d¬«      | _        t        j                  j                  d	¬
«      | _
        t        j                  j                  d¬
«      | _        t        j                  j                  d¬
«      | _        y ©NÚfooúguardian-tests©ÚmodelrÃ   ÚbarÚuser1r‡   Úuser2Úuser3Úgroup1r‹   Úgroup2Úgroup3©r   rn   ro   Úobj1Úobj2r.   rÖ   r×   rØ   r   rÙ   rÚ   rÛ   rE   s    r5   r�   zGetUsersWithPermsTest.setUpC  óÞ   € Ü×'Ñ'×.Ñ.ØÐ#3ð /ó 5ˆŒ	ä×'Ñ'×.Ñ.ØÐ#3ð /ó 5ˆŒ	ä—\‘\×(Ñ(°'Ð(Ó:ˆŒ
Ü—\‘\×(Ñ(°'Ð(Ó:ˆŒ
Ü—\‘\×(Ñ(°'Ð(Ó:ˆŒ
Ü—m‘m×*Ñ*°Ð*Ó9ˆŒÜ—m‘m×*Ñ*°Ð*Ó9ˆŒÜ—m‘m×*Ñ*°Ð*Ó9ˆ�r7   c                 óB  — t        | j                  «      }| j                  t        |t        «      «       | j                  t        |«      g «       t        | j                  d¬«      }| j                  t        |t        «      «       | j                  t        |«      «       y ©NT©Úattach_perms)
r   rÝ   r,   re   r   r)   r-   Údictr¯   Úbool©r1   Úresults     r5   Ú
test_emptyz GetUsersWithPermsTest.test_emptyO  sl   € Ü% d§i¡iÓ0ˆØ�‰œ
 6¬8Ó4Ô5Ø×Ñœ˜f› rÔ*ä% d§i¡i¸dÔCˆØ�‰œ
 6¬4Ó0Ô1Ø×Ñœ˜f›Õ&r7   c                 ó¶  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j
                  «       t        | j                  «      }|j                  dd¬«      }| j                  t        |«      | j                  | j                  fD �ch c]  }|j                  ’Œ c}«       y c c}w )NrQ   rR   rˆ   T©Úflat©r   rÖ   rÝ   r×   rØ   rÞ   r   r0   r)   Úsetrˆ   )r1   rç   Úresult_valsr*   s       r5   Útest_simplez!GetUsersWithPermsTest.test_simpleX  sœ   € ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ä% d§i¡iÓ0ˆØ×(Ñ(¨¸$Ð(Ó?ˆà×ÑÜ�ÓØ(,¯
©
°D·J±JÐ'?Ö@˜tˆT�]‹]Ò@õ	
ùâ@s   Â;C
c                 ó~  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j
                  «       t        | j                  d¬«      }|j                  dd¬«      }| j                  t        |«      | j                  j                  h«       y )NrQ   rR   rÉ   )Úonly_with_perms_inrˆ   Trê   rì   ©r1   rç   rî   s      r5   Útest_only_with_perms_inz-GetUsersWithPermsTest.test_only_with_perms_ine  s�   € ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ä% d§i¡iÐD[Ô\ˆØ×(Ñ(¨¸$Ð(Ó?ˆà×ÑÜ�ÓØ�Z‰Z× Ñ Ð!õ	
r7   c                 óÄ  — | j                   j                  j                  | j                  «       | j                  j                  j                  | j
                  «       | j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        d| j                  | j                  «       t        | j                  dd¬«      }|j                  dd¬«      }| j                  t        |«      | j                   j                  | j                  j                  h«       y )	NrQ   rR   rP   ©rQ   rR   T©rñ   Úwith_group_usersrˆ   rê   ©rÖ   Úgroupsr”   rÙ   r×   rÚ   rØ   rÛ   r   rÝ   rÞ   r   r0   r)   rí   rˆ   rò   s      r5   Ú,test_only_with_perms_in_and_with_group_userszBGetUsersWithPermsTest.test_only_with_perms_in_and_with_group_usersr  sù   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ô 	Ð(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ% t§{¡{°D·I±IÔ>ä% d§i¡iÐDpð  DHô  IˆØ×(Ñ(¨¸$Ð(Ó?ˆà×ÑÜ�ÓØ�Z‰Z× Ñ  $§*¡*×"5Ñ"5Ð6õ	
r7   c                 óÜ  — | j                   j                  j                  | j                  «       | j                  j                  j                  | j
                  «       | j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j                  dd¬«      }|j                  dd¬«      }| j                  t        |«      | j                  j                  h«       y )	NrQ   rR   rõ   Frö   rˆ   Trê   rø   rò   s      r5   Ú0test_only_with_perms_in_and_not_with_group_userszFGetUsersWithPermsTest.test_only_with_perms_in_and_not_with_group_users„  s  € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ô 	Ð(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAô 	Ð(¨$¯*©*°d·i±iÔ@ä% d§i¡iÐDpð  DIô  JˆØ×(Ñ(¨¸$Ð(Ó?ˆà×ÑÜ�ÓØ�Z‰Z× Ñ Ð!õ	
r7   c                 ó2  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j
                  «       t        | j                  dd¬«      }| j                  di}| j                  |j                  «       |j                  «       «       |j                  «       D ],  \  }}| j                  t        |«      t        ||   «      «       Œ. y )NrQ   rR   )rR   T)rñ   rã   rõ   )r   rÖ   rÝ   r×   rØ   rÞ   r   r)   ÚkeysÚitemsrí   ©r1   rç   ÚexpectedÚkeyrË   s        r5   Ú test_only_with_perms_in_attachedz6GetUsersWithPermsTest.test_only_with_perms_in_attached™  sÏ   € ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ä% d§i¡iÐD[Øôˆð —J‘JÐ LÐMˆØ×Ñ˜Ÿ™›¨¯©«Ô8Ø Ÿ,™,›.ò 	=‰JˆC�Ø×ÑœS ›Z¬¨X°c©]Ó);Õ<ñ	=r7   c                 óÌ  — | j                   j                  j                  | j                  «       | j                  j                  j                  | j
                  «       | j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        d| j                  | j                  «       t        | j                  «      j                  dd¬«      }| j                  t        |«      | j                   | j                  fD �ch c]  }|j                  ’Œ c}«       y c c}w )NrQ   rR   ÚpkTrê   )rÖ   rù   r”   rÙ   r×   rÚ   rØ   rÛ   r   rÝ   rÞ   r   r0   r)   rí   r  )r1   rç   Úus      r5   Útest_users_groups_permsz-GetUsersWithPermsTest.test_users_groups_perms§  sð   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAä% d§i¡iÓ0×<Ñ<¸TØBFð =ó Hˆà×ÑÜ�‹KØ ŸJ™J¨¯
©
Ð3Ö4�aˆQ�T‹TÒ4õ	
ùâ4s   ÅE!
c                 ó  — | j                  «        t        d| j                  | j                  «       t	        | j                  «      j                  dd¬«      }| j                  t        |«      | j                  j                  h«       y )NrQ   r  Trê   )
r  r   rÙ   rÝ   r   r0   r)   rí   r×   r  ræ   s     r5   Útest_users_groups_after_removalz5GetUsersWithPermsTest.test_users_groups_after_removal¶  si   € Ø×$Ñ$Ô&ÜÐ(¨$¯+©+°t·y±yÔAä% d§i¡iÓ0×<Ñ<¸TØBFð =ó Hˆà×ÑÜ�‹KØ�Z‰Z�]‰]ˆOõ	
r7   c                 óÒ  — | j                   j                  j                  | j                  «       | j                  j                  j                  | j
                  «       | j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j                  d¬«      }| j                   dg| j                  ddgi}| j                  |j                  «       |j                  «       «       |j                  «       D ],  \  }}| j                  t        |«      t        ||   «      «       Œ. t        | j                  d¬«      }| j                  ddgi}| j                  |j                  «       |j                  «       «       |j                  «       D ],  \  }}| j                  t        |«      t        ||   «      «       Œ. y )NrQ   rR   Trâ   )rÖ   rù   r”   rÙ   r×   rÚ   rØ   rÛ   r   rÝ   rÞ   r   r)   rþ   rÿ   rí   r   s        r5   Útest_attach_permsz'GetUsersWithPermsTest.test_attach_permsÁ  sÆ  € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ô & d§i¡i¸dÔCˆà�J‰JÐ-Ð.Ø�J‰JÐ-Ð/CÐDð
ˆð 	×Ñ˜Ÿ™›¨¯©«Ô8Ø Ÿ,™,›.ò 	=‰JˆC�Ø×ÑœS ›Z¬¨X°c©]Ó);Õ<ð	=ô & d§i¡i¸dÔCˆà�J‰JÐ-Ð/CÐDð
ˆð 	×Ñ˜Ÿ™›¨¯©«Ô8Ø Ÿ,™,›.ò 	=‰JˆC�Ø×ÑœS ›Z¬¨X°c©]Ó);Õ<ñ	=r7   c                 ó  — | j                   j                  j                  | j                  «       t	        d| j                  | j
                  «       t        | j
                  d¬«      }| j                   dgi}| j                  ||«       y ©NrQ   Trâ   ©rÖ   rù   r”   rÙ   r   rÝ   r   r)   ©r1   rç   r  s      r5   Ú!test_attach_groups_only_has_permsz7GetUsersWithPermsTest.test_attach_groups_only_has_permsÞ  se   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜ% d§i¡i¸dÔCˆØ—J‘JÐ!5Ð 6Ð7ˆØ×Ñ˜ Õ*r7   c                 óˆ  — | j                   j                  j                  | j                  «       t	        d| j                  | j
                  «       t	        d| j                  | j
                  «       t	        d| j                  | j
                  «       t	        d| j                  | j                  «       t	        d| j                  | j                  «       t	        dt        z  | j                  | j                   «       t        | j
                  «      }| j                  t        |«      | j                   | j                  h«       y )NrQ   rR   ú	change_%s)rÖ   rù   r”   rÙ   r   rÝ   r×   rÞ   rØ   Úuser_module_namer   r)   rí   ræ   s     r5   Ú
test_mixedz GetUsersWithPermsTest.test_mixedå  sÔ   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯*©*°d·i±iÔ@Ü�KÔ"2Ñ2°D·J±JÀÇ
Á
ÔKä% d§i¡iÓ0ˆØ×ÑÜ�‹KØ�Z‰Z˜Ÿ™Ð$õ	
r7   c                 ó  — t         j                  j                  dd¬«      }t        d| j                  | j
                  «       t        | j
                  d¬«      }| j                  t        |«      | j                  |h«       y )NÚadminT©rˆ   Úis_superuserrQ   )Úwith_superusers)	r.   rn   ro   r   rÖ   rÝ   r   r)   rí   )r1   r  rç   s      r5   Útest_with_superusersz*GetUsersWithPermsTest.test_with_superusersô  sa   € Ü—‘×#Ñ#¨WÀ4Ð#ÓHˆÜÐ(¨$¯*©*°d·i±iÔ@ä% d§i¡iÀÔFˆØ×ÑÜ�‹KØ�Z‰Z˜Ðõ	
r7   c                 ó  — | j                   j                  j                  | j                  «       | j                  j                  j                  | j
                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        | j                  d¬«      }| j                  h}| j                  t        |«      |«       y )NrQ   F)r÷   )rÖ   rù   r”   rÙ   r×   rÚ   r   rÝ   r   r)   rí   r  s      r5   Útest_without_group_usersz.GetUsersWithPermsTest.test_without_group_usersþ  s¨   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯+©+°t·y±yÔAÜ% d§i¡iÀ%ÔHˆØ—J‘J�<ˆØ×Ñœ˜V› hÕ/r7   c                 óø  — | j                   j                  j                  | j                  «       | j                  j                  j                  | j
                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        | j                  dd¬«      }| j                  dgi}| j                  ||«       y )NrQ   FT)r÷   rã   )
rÖ   rù   r”   rÙ   r×   rÚ   r   rÝ   r   r)   r  s      r5   Ú+test_without_group_users_but_perms_attachedzAGetUsersWithPermsTest.test_without_group_users_but_perms_attached  s°   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨$¯+©+°t·y±yÔAÜ% d§i¡iÀ%Ø37ô9ˆà—J‘JÐ!5Ð 6Ð7ˆØ×Ñ˜ Õ*r7   c                 ó	  — t         j                  j                  dd¬«      }| j                  j                  j                  | j                  «       | j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        d|| j                  «       t        d| j                  | j                  «       | j                  | j                  |h}t        | j                  dd¬«      }| j                  t        |«      |«       | j                  t        t        | j                  | j                  «      «      dh«       | j                  t        t        | j                  | j                  «      «      t        «       «       | j                  t        t        || j                  «      «      dh«       t        | j                  dd¬«      }| j                  |h}| j                  t        |«      |«       | j                  t        t        | j                  | j                  «      «      dh«       | j                  t        t        | j                  | j                  «      «      dh«       | j                  t        t        | j                  | j                  «      «      dh«       | j                  t        t        | j                  | j                  «      «      t        «       «       | j                  t        t        || j                  «      «      t        «       «       g d¢}t         j"                  d	k\  r|j%                  d
«       | j                  t        t'        || j                  «      «      t        |«      «       | j                  t        t'        | j                  | j                  «      «      ddh«       | j                  t        t'        | j                  | j                  «      «      dh«       | j                  t        t'        | j                  | j                  «      «      dh«       | j                  t        t'        | j                  | j                  «      «      t        «       «       y )Nr  Tr  rQ   rR   F)r  r÷   ©rP   rQ   rR   r"   Úview_contenttype)r.   rn   ro   rÖ   rù   r”   rÙ   r×   r   rÝ   r   r)   rí   r   r   rÚ   r'   r(   Úappendr   )r1   r  r  rç   Úexpected_permissionss        r5   Útest_direct_perms_onlyz,GetUsersWithPermsTest.test_direct_perms_only  s  € Ü—‘×#Ñ#¨WÀ4Ð#ÓHˆØ�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨%°·±Ô;ÜÐ(¨$¯+©+°t·y±yÔAØ—J‘J §
¡
¨EÐ2ˆÜ% d§i¡iÀÐY]Ô^ˆØ×Ñœ˜V› hÔ/Ø×Ñœœ^¨D¯J©J¸¿	¹	ÓBÓCÐFZÐE[Ô\Ø×Ñœœ^¨D¯J©J¸¿	¹	ÓBÓCÄSÃUÔKØ×Ñœœ^¨E°4·9±9Ó=Ó>ÐAUÐ@VÔWÜ% d§i¡iÀÐY^Ô_ˆØ—J‘J Ð&ˆØ×Ñœ˜V› hÔ/Ø×Ñœœ_¨T¯Z©Z¸¿¹ÓCÓDÐG[ÐF\Ô]Ø×Ñœœ_¨T¯Z©Z¸¿¹ÓCÓDÐG[ÐF\Ô]Ø×Ñœœ_¨T¯[©[¸$¿)¹)ÓDÓEÐH\ÐG]Ô^Ø×Ñœœ_¨T¯[©[¸$¿)¹)ÓDÓEÄsÃuÔMØ×Ñœœ_¨U°D·I±IÓ>Ó?ÄÃÔGÚ^ÐÜ�>‰>˜VÒ#Ø ×'Ñ'Ð(:Ô;Ø×ÑœœY u¨d¯i©iÓ8Ó9¼3Ð?SÓ;TÔUØ×ÑœœY t§z¡z°4·9±9Ó=Ó>ÐAUÐWkÐ@lÔmØ×ÑœœY t§z¡z°4·9±9Ó=Ó>ÐAUÐ@VÔWØ×ÑœœY t§{¡{°D·I±IÓ>Ó?ÐBVÐAWÔXØ×ÑœœY t§{¡{°D·I±IÓ>Ó?ÄÃÕGr7   c                 óÊ  — t         j                  j                  dd¬«      }| j                  j                  j                  | j                  «       | j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        d|| j                  «       t        d| j                  | j                  «       | j                  ddg|g d¢| j                  dgi}t        j                  dk\  r||   j                  d«       t        | j                  dd	d¬
«      }| j                  |j                  «       |j                  «       «       |j!                  «       D ],  \  }}| j                  t#        |«      t#        ||   «      «       Œ. t        | j                  dd	d	¬
«      }| j                  dg|dgi}| j                  ||«       y )Nr  Tr  rQ   rR   r   r"   r!  F)rã   r  r÷   )r.   rn   ro   rÖ   rù   r”   rÙ   r×   r   rÝ   r'   r(   r"  r   r)   rþ   rÿ   rí   )r1   r  r  rç   r  rË   s         r5   Ú%test_direct_perms_only_perms_attachedz;GetUsersWithPermsTest.test_direct_perms_only_perms_attached1  s†  € Ü—‘×#Ñ#¨WÀ4Ð#ÓHˆØ�
‰
×Ñ×Ñ˜dŸk™kÔ*Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯*©*°d·i±iÔ@ÜÐ(¨%°·±Ô;ÜÐ(¨$¯+©+°t·y±yÔAà�J‰JÐ-Ð/CÐDØÒRØ�J‰JÐ-Ð.ð
ˆô
 �>‰>˜VÒ#Ø�U‰O×"Ñ"Ð#5Ô6Ü% d§i¡i¸dØ!°Dô:ˆà×Ñ˜Ÿ™›¨¯©«Ô8Ø Ÿ,™,›.ò 	=‰JˆC�Ø×ÑœS ›Z¬¨X°c©]Ó);Õ<ð	=ä% d§i¡i¸dØ!°Eô;ˆà—J‘JÐ!5Ð 6ØÐ0Ð1ð3ˆà×Ñ˜ Õ*r7   c                 óü   — | j                   j                  j                  | j                  «       t	        d| j                  | j
                  «       t        | j
                  dd¬«      }i }| j                  ||«       y )NrQ   TF)rã   r÷   r  r  s      r5   Ú"test_without_group_users_no_resultz8GetUsersWithPermsTest.test_without_group_users_no_resultJ  s]   € Ø�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜ% d§i¡i¸dØ7<ô>ˆàˆØ×Ñ˜ Õ*r7   c                 ód  — t         j                  j                  dd¬«      }| j                  j                  j                  | j                  «       t        d| j                  | j                  «       t        | j                  dd¬«      }|g}| j                  t        |«      t        |«      «       y )Nr  Tr  rQ   F)r÷   r  )r.   rn   ro   rÖ   rù   r”   rÙ   r   rÝ   r   r)   rí   )r1   r  rç   r  s       r5   Ú6test_without_group_users_no_result_but_with_superuserszLGetUsersWithPermsTest.test_without_group_users_no_result_but_with_superusersR  s€   € Ü—‘×#Ñ#¨WÀ4Ð#ÓHˆØ�
‰
×Ñ×Ñ˜dŸk™kÔ*ÜÐ(¨$¯+©+°t·y±yÔAÜ% d§i¡iÀ%Ø6:ô<ˆà�7ˆØ×Ñœ˜V›¤c¨(£mÕ4r7   N)r8   r9   r:   r‚   r�   rè   rï   ró   rú   rü   r  r  r	  r  r  r  r  r  r  r$  r&  r(  r*  r;   r7   r5   rÎ   rÎ   >  sg   „ ñò
:ò'ò
ò
ò
ò$
ò*=ò
ò	
ò=ò:+ò
ò
ò0ò	+òHò<+ò2+ó5r7   rÎ   c                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚGetGroupsWithPermsz/
    Tests get_groups_with_perms function.
    c                 óX  — t         j                  j                  dd¬«      | _        t         j                  j                  dd¬«      | _        t
        j                  j                  d¬«      | _        t
        j                  j                  d¬«      | _        t
        j                  j                  d¬«      | _        t        j                  j                  d	¬
«      | _
        t        j                  j                  d¬
«      | _        t        j                  j                  d¬
«      | _        y rÐ   rÜ   rE   s    r5   r�   zGetGroupsWithPerms.setUpa  rß   r7   c                 ó@  — t        | j                  «      }| j                  t        |t        «      «       | j                  t        |«      «       t        | j                  d¬«      }| j                  t        |t        «      «       | j                  t        |«      «       y rá   )r   rÝ   r,   re   r   r¯   rå   rä   ræ   s     r5   rè   zGetGroupsWithPerms.test_emptym  sj   € Ü& t§y¡yÓ1ˆØ�‰œ
 6¬8Ó4Ô5Ø×Ñœ˜f›Ô&ä& t§y¡y¸tÔDˆØ�‰œ
 6¬4Ó0Ô1Ø×Ñœ˜f›Õ&r7   c                 óä   — t        d| j                  | j                  «       t        | j                  «      }| j	                  t        |«      d«       | j	                  |d   | j                  «       y )NrQ   r$   r   )r   rÙ   rÝ   r   r)   rx   ræ   s     r5   rï   zGetGroupsWithPerms.test_simplev  sQ   € ÜÐ(¨$¯+©+°t·y±yÔAÜ& t§y¡yÓ1ˆØ×Ñœ˜V› aÔ(Ø×Ñ˜ ™ D§K¡KÕ0r7   c                 óÆ   — | j                  «        t        d| j                  | j                  «       t	        | j                  «      }| j                  t        |«      d«       y )NrQ   r   )rï   r   rÙ   rÝ   r   r)   rx   ræ   s     r5   Útest_simple_after_removalz,GetGroupsWithPerms.test_simple_after_removal|  sE   € Ø×ÑÔÜÐ(¨$¯+©+°t·y±yÔAÜ& t§y¡yÓ1ˆØ×Ñœ˜V› aÕ(r7   c                 ó¶   — t        d| j                  | j                  «       t        | j                  d¬«      }| j                  dgi}| j	                  ||«       y r  )r   rÙ   rÝ   r   r)   r  s      r5   Útest_simple_attach_permsz+GetGroupsWithPerms.test_simple_attach_perms‚  sI   € ÜÐ(¨$¯+©+°t·y±yÔAÜ& t§y¡y¸tÔDˆØ—K‘KÐ"6Ð!7Ð8ˆØ×Ñ˜ Õ*r7   c                 óÊ   — | j                  «        t        d| j                  | j                  «       t	        | j                  d¬«      }| j                  t        |«      d«       y )NrQ   Trâ   r   )r3  r   rÙ   rÝ   r   r)   rx   ræ   s     r5   Ú&test_simple_attach_perms_after_removalz9GetGroupsWithPerms.test_simple_attach_perms_after_removalˆ  sG   € Ø×%Ñ%Ô'ÜÐ(¨$¯+©+°t·y±yÔAÜ& t§y¡y¸tÔDˆØ×Ñœ˜V› aÕ(r7   c                 ó@  — t         j                  j                  ddd¬«      }t        j                  j                  dd¬«      }t	        d| j
                  |«       t	        d| j
                  |«       t        |d	¬
«      }| j                  || j
                     dg«       y )Ni  ÚbazrÒ   )r  rÔ   rÃ   rS   )r  rŒ   Úchange_grouprQ   Trâ   )r   rn   ro   r   r   rÙ   r   r)   )r1   r4   rS   rç   s       r5   Útest_filter_by_contenttypez-GetGroupsWithPerms.test_filter_by_contenttypeŽ  sƒ   € ä×!Ñ!×(Ñ(¨D¸ÐIYÐ(ÓZˆÜ—‘×$Ñ$¨°7Ð$Ó;ˆä�N D§K¡K°Ô7ÜÐ(¨$¯+©+°sÔ;ä& s¸Ô>ˆà×Ñ˜ §¡Ñ,Ð/CÐ.DÕEr7   c                 óz  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        dt        z  | j                  | j
                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        dt        z  | j                  | j                  «       t        | j                  «      }| j                  t        |«      | j                  | j                  h«       y )NrQ   r  rR   )r   rÙ   rÝ   rÞ   r  rØ   rÚ   rÛ   rÖ   r   r)   rí   ræ   s     r5   r  zGetGroupsWithPerms.test_mixedš  sÎ   € ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜ�KÔ"2Ñ2°D·K±KÀÇÁÔLÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜ�KÔ"2Ñ2°D·K±KÀÇÁÔLä& t§y¡yÓ1ˆØ×Ñœ˜V› t§{¡{°D·K±KÐ&@ÕAr7   c                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j
                  | j                  «       t        d| j
                  | j                  «       t        d| j
                  | j                  «       t        d| j                  | j                  «       t        | j                  d¬«      }| j                  dg| j
                  ddgi}| j                  |j                  «       |j                  «       «       |j                  «       D ],  \  }}| j                  t        |«      t        ||   «      «       Œ. y )NrQ   r8  rR   Trâ   )r   rÙ   rÝ   rÞ   rÛ   rÚ   r   r)   rþ   rÿ   rí   r   s        r5   Útest_mixed_attach_permsz*GetGroupsWithPerms.test_mixed_attach_perms¦  s  € ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜ�N D§K¡K°·±Ô=ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜ�N D§K¡K°·±Ô=ä& t§y¡y¸tÔDˆà�K‰KÐ.Ð/Ø�K‰KÐ.Ð0DÐEð
ˆð 	×Ñ˜Ÿ™›¨¯©«Ô8Ø Ÿ,™,›.ò 	=‰JˆC�Ø×ÑœS ›Z¬¨X°c©]Ó);Õ<ñ	=r7   N)r8   r9   r:   r‚   r�   rè   rï   r1  r3  r5  r9  r  r<  r;   r7   r5   r,  r,  \  s6   „ ñò
:ò'ò1ò)ò+ò)ò
Fò
Bó=r7   r,  c                   óê   — 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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d„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'y&)'ÚGetObjectsForUserc                 óä   — t         j                  j                  d¬«      | _        t        j                  j                  d¬«      | _        t        j                  j                  dd¬«      | _        y )NÚjoer‡   rS   r‹   rÕ   zfake-for-guardian-testsrÓ   )r.   rn   ro   r*   r   rS   r   rD   rE   s    r5   r�   zGetObjectsForUser.setUp»  sW   € Ü—L‘L×'Ñ'°Ð'Ó7ˆŒ	Ü—]‘]×)Ñ)¨wÐ)Ó7ˆŒ
Ü ×(Ñ(×/Ñ/ØÐ#<ð 0ó >ˆ�
r7   c                 óÚ   — d| j                   _        t        j                  j	                  «       }t        | j                   dg|«      }| j                  t        |«      t        |«      «       y )NTrc   ©r*   r  r   rn   r—   r   r)   rí   ©r1   Úctypesrn   s      r5   Útest_superuserz GetObjectsForUser.test_superuserÁ  sS   € Ø!%ˆ�	‰	ÔÜ×$Ñ$×(Ñ(Ó*ˆÜ& t§y¡yØ(IÐ'JÈFóTˆà×Ñœ˜V›¤c¨'£lÕ3r7   c                 óÞ   — d| j                   _        t        j                  j	                  «       }t        | j                   dg|d¬«      }| j                  t        |«      t        |«      «       y )NTrc   ©Úwith_superuserrB  rC  s      r5   Útest_with_superuser_truez*GetObjectsForUser.test_with_superuser_trueÈ  sV   € Ø!%ˆ�	‰	ÔÜ×$Ñ$×(Ñ(Ó*ˆÜ& t§y¡yØ(IÐ'JÈFÐcgôiˆà×Ñœ˜V›¤c¨'£lÕ3r7   c                 ó>  — d| j                   _        t        j                  j	                  «       }t        j                  j                  dd¬«      }t        d| j                   |«       t        | j                   dg|d¬«      }| j                  |ht        |«      «       y )	NTrÑ   rÒ   rÓ   rQ   rc   FrG  )
r*   r  r   rn   r—   ro   r   r   r)   rí   )r1   rD  rÝ   rn   s       r5   Útest_with_superuser_falsez+GetObjectsForUser.test_with_superuser_falseÏ  s†   € Ø!%ˆ�	‰	ÔÜ×$Ñ$×(Ñ(Ó*ˆÜ×"Ñ"×)Ñ)ØÐ#3ð *ó 5ˆäÐ(¨$¯)©)°TÔ:Ü& t§y¡yØ(IÐ'JÈFÐchôjˆà×Ñ˜$˜¤ W£Õ.r7   c                 óf  — t        «       | _        t        j                  j	                  «       }t        | j                  dg|«      }t        j                  j                  dd¬«      }t        d| j                  |«       t        | j                  dg|«      }| j                  |ht        |«      «       y )Nrc   rÑ   rÒ   rÓ   rQ   )
r   r*   r   rn   r—   r   ro   r   r)   rí   )r1   rD  rn   rÝ   s       r5   Útest_anonymousz GetObjectsForUser.test_anonymousÙ  s›   € Ü!“OˆŒ	Ü×$Ñ$×(Ñ(Ó*ˆÜ& t§y¡yØ(IÐ'JÈFóTˆô ×"Ñ"×)Ñ)ØÐ#3ð *ó 5ˆäÐ(¨$¯)©)°TÔ:Ü& t§y¡yØ(IÐ'JÈFóTˆà×Ñ˜$˜¤ W£Õ.r7   c                 ój   — t        d«      dg}| j                  t        t        | j                  |«       y ©NÚchangeúauth.change_permission©r
   rC   r   r   r*   ©r1   Ú	codenamess     r5   Útest_mixed_permsz"GetObjectsForUser.test_mixed_permsæ  s3   € ä-¨hÓ7Ø$ð
ˆ	ð 	×ÑÔ/Ô1EØŸ)™) Yõ	0r7   c                 ój   — t        d«      dg}| j                  t        t        | j                  |«       y )NrP  rc   rR  rS  s     r5   Útest_perms_with_mixed_appsz,GetObjectsForUser.test_perms_with_mixed_appsî  s3   € ä-¨hÓ7Ø-ð
ˆ	ð 	×ÑÔ/Ô1EØŸ)™) Yõ	0r7   c                 ó\   — | j                  t        t        | j                  dgt        «       y ©Núauth.change_group)rC   r   r   r*   r.   rE   s    r5   Útest_mixed_perms_and_klassz,GetObjectsForUser.test_mixed_perms_and_klassö  s&   € Ø×ÑÔ/Ô1EØŸ)™)Ð&9Ð%:¼Dõ	Br7   c                 óR   — | j                  t        t        | j                  dg«       y )Nr8  )rC   r   r   r*   rE   s    r5   Útest_no_app_label_nor_klassz-GetObjectsForUser.test_no_app_label_nor_klassú  s!   € Ø×Ñœ-Ô)=¸t¿y¹yØ)Ð*õ	,r7   c                 ó°   — t        | j                  g t        j                  j	                  «       «      }| j                  t        |«      t        «       «       y ©N)r   r*   r   rn   r—   r)   rí   ©r1   rn   s     r5   Útest_empty_perms_sequencez+GetObjectsForUser.test_empty_perms_sequenceþ  s;   € Ü& t§y¡y°"´e·m±m×6GÑ6GÓ6IÓJˆØ×ÑÜ�‹LÜ‹Eõ	
r7   c           	      óä   — d}t        || j                  | j                  «       | j                  t	        t        | j                  |«      «      t	        t        | j                  |g«      «      «       y rY  )r   r*   rS   r)   rí   r   rf   s     r5   Útest_perms_singlez#GetObjectsForUser.test_perms_single  sS   € Ø"ˆÜ�D˜$Ÿ)™) T§Z¡ZÔ0Ø×ÑÜÔ$ T§Y¡Y°Ó5Ó6ÜÔ$ T§Y¡Y°°Ó7Ó8õ	:r7   c                 ó  — t        d| j                  | j                  «       t        | j                  dgt        «      }| j                  |D �cg c]  }|j                  ‘Œ c}| j                  j                  g«       y c c}w ri   ©r   r*   rD   r   r   r)   rŒ   ©r1   rn   r4   s      r5   Útest_klass_as_modelz%GetObjectsForUser.test_klass_as_model  s]   € ÜÐ5°t·y±yÀ$Ç*Á*ÔMä& t§y¡yØ(IÐ'JÌKóYˆà×Ñ¨gÖ6 s˜#Ÿ(›(Ò6¸¿¹¿¹Ð8IÕJùÒ6ó   ÁA>c                 ó  — t        d| j                  | j                  «       t        | j                  dgt        j
                  «      }| j                  |D �cg c]  }|j                  ‘Œ c}| j                  j                  g«       y c c}w rY  )r   r*   rS   r   r   rn   r)   rŒ   rf  s      r5   Útest_klass_as_managerz'GetObjectsForUser.test_klass_as_manager  sa   € ÜÐ'¨¯©°D·J±JÔ?Ü& t§y¡yÐ3FÐ2GÜ',§}¡}ó6ˆà×Ñ¨gÖ6 s˜#Ÿ(›(Ò6¸¿¹¿¹Ð8IÕJùÒ6s   ÁBc                 ó6  — t        d| j                  | j                  «       t        | j                  dgt        j
                  j                  «       «      }| j                  |D �cg c]  }|j                  ‘Œ c}| j                  j                  g«       y c c}w rY  )	r   r*   rS   r   r   rn   r—   r)   rŒ   rf  s      r5   Útest_klass_as_querysetz(GetObjectsForUser.test_klass_as_queryset  sj   € ÜÐ'¨¯©°D·J±JÔ?Ü& t§y¡yÐ3FÐ2GÜ',§}¡}×'8Ñ'8Ó':ó<ˆà×Ñ¨gÖ6 s˜#Ÿ(›(Ò6¸¿¹¿¹Ð8IÕJùÒ6s   Á%Bc                 óp   — t        | j                  dg«      }| j                  t        |t        «      «       y rY  )r   r*   r,   re   r   r`  s     r5   Útest_ensure_returns_querysetz.GetObjectsForUser.test_ensure_returns_queryset  s)   € Ü& t§y¡yÐ3FÐ2GÓHˆØ�‰œ
 7¬HÓ5Õ6r7   c                 ó¨  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]  }t        d| j                  |«       Œ t        | j                  dg«      }| j                  t        |«      t        |«      «       | j                  t        |t        «      «       | j                  t        |«      t        |«      «       y c c}w )N©rÙ   rÚ   rÛ   r‹   r8  rZ  ©r   rn   ro   r   r*   r   r)   rx   r,   re   r   rí   ©r1   Úgroup_namesrŒ   rù   rS   rn   s         r5   rï   zGetObjectsForUser.test_simple#  s®   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	:ˆEÜ˜¨¯	©	°5Õ9ð	:ô ' t§y¡yÐ3FÐ2GÓHˆØ×Ñœ˜W›¤s¨6£{Ô3Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�‹LÜ�‹Kõ	ùò Kó   ‰'Cc                 óø  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]  }t        d| j                  |«       Œ t        d| j                  |d   «       t        | j                  ddg«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  dd¬«      «      |d   j                  h«       y c c}w )	Nrp  r‹   rZ  úauth.delete_groupr$   rŒ   Trê   ©r   rn   ro   r   r*   r   r)   rx   r,   re   r   rí   r0   rŒ   rr  s         r5   Útest_multiple_perms_to_checkz.GetObjectsForUser.test_multiple_perms_to_check0  sß   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	?ˆEÜÐ+¨T¯Y©Y¸Õ>ð	?äÐ'¨¯©°F¸1±IÔ>ä& t§y¡yÐ3FØ3Fð3Hó Iˆà×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# F°Ð#Ó6Ó7Ø�A‰Y�^‰^Ðõ	ùò Ks   ‰'C7c                 óü  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]  }t        d| j                  |«       Œ t        d| j                  |d   «       t        | j                  ddgd¬«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  dd	¬
«      «      |d   j                  h«       y c c}w )Nrp  r‹   rZ  rv  r$   F)Ú
use_groupsrŒ   Trê   rw  rr  s         r5   Ú&test_multiple_perms_to_check_no_groupsz8GetObjectsForUser.test_multiple_perms_to_check_no_groups?  sâ   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	?ˆEÜÐ+¨T¯Y©Y¸Õ>ð	?äÐ'¨¯©°F¸1±IÔ>ä& t§y¡yÐ3FØ3Fð3HØTYô[ˆà×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# F°Ð#Ó6Ó7Ø�A‰Y�^‰^Ðõ	ùò Ks   ‰'C9c                 ó  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}t        d| j                  |d   «       t        d| j                  |d   «       t        | j                  ddgd¬«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  d	d¬
«      «      |d   j                  |d   j                  h«       y c c}w )Nrp  r‹   rZ  r   rv  r#   T©Úany_permrŒ   rê   rw  )r1   rs  rŒ   rù   rn   s        r5   Ú#test_any_of_multiple_perms_to_checkz5GetObjectsForUser.test_any_of_multiple_perms_to_checkN  sá   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJÜÐ'¨¯©°F¸1±IÔ>ÜÐ'¨¯©°F¸1±IÔ>ä& t§y¡yÐ3FØ3Fð3HØRVôXˆà×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# F°Ð#Ó6Ó7Ø�A‰Y�^‰^˜V A™YŸ^™^Ð,õ	.ùò Ks   ‰'Dc                 óz  — t         j                  j                  d¬«      }t         j                  j                  d¬«      }t         j                  j                  d¬«      }|||g}|D ]'  }| j                  j                  j                  |«       Œ) t        t        j                  j                  «       j                  d«      «      }t        d| j                  «       t        d| j                  |d   «       t        d| j                  |d	   «       t        d
| j                  |d	   «       t        d
| j                  |d   «       t        d|d   |d   «       t        d|d	   |d   «       t        d|d   |d   «       t        d
|d   |d   «       t        | j                  dg«      }| j                  t        |j                  dd¬«      «      dD �ch c]  }||   j                  ’Œ c}«       t        | j                  ddg«      }| j                  t        |j                  dd¬«      «      dD �ch c]  }||   j                  ’Œ c}«       t        | j                  dg«      }| j                  t        |j                  dd¬«      «      dD �ch c]  }||   j                  ’Œ c}«       y c c}w c c}w c c}w )NrÙ   r‹   rÚ   rÛ   ÚidrZ  rQ   r   r$   rR   r#   r%   r&   rc   Trê   )r   r$   r%   r&   rd   )r   r$   ©r   rn   ro   r*   rù   r”   r-   r   r—   Úorder_byr   r   r)   rí   r0   r�  )	r1   rÙ   rÚ   rÛ   rù   rS   rD  rn   Úis	            r5   Útest_groups_permsz#GetObjectsForUser.test_groups_perms\  sk  € Ü—‘×%Ñ%¨8Ð%Ó4ˆÜ—‘×%Ñ%¨8Ð%Ó4ˆÜ—‘×%Ñ%¨8Ð%Ó4ˆØ˜& &Ð)ˆØò 	(ˆEØ�I‰I×Ñ× Ñ  Õ'ð	(ô ”k×)Ñ)×-Ñ-Ó/×8Ñ8¸Ó>Ó?ˆÜÐ'¨¯©Ô3ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?äÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ä& t§y¡yØ(IÐ'JóLˆà×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø#/Ö0˜aˆV�A‰Y�\‹\Ò0ô	2ô ' t§y¡yØ(IØ(Ið(KóLˆð 	×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø#)Ö*˜aˆV�A‰Y�\‹\Ò*ô	,ô ' t§y¡yØ(IÐ'JóLˆà×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø#/Ö0˜aˆV�A‰Y�\‹\Ò0õ	2ùò 1ùò +ùò 1s   ÇJ.
È2J3
ÊJ8
c                 óx  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}d}t        || j                  «       t        | j                  |«      }t        || j                  «       | j                  t        |«      t        t         j                  j                  «       «      «       y c c}w )Nrp  r‹   rZ  ©
r   rn   ro   r   r*   r   r   r)   rí   r—   )r1   rs  rŒ   rù   rA   rn   s         r5   Útest_has_global_permission_onlyz1GetObjectsForUser.test_has_global_permission_only„  sŒ   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJà"ˆä�D˜$Ÿ)™)Ô$Ü& t§y¡y°$Ó7ˆÜ�D˜$Ÿ)™)Ô$Ø×Ñœ˜W›ÜœUŸ]™]×.Ñ.Ó0Ó1õ	3ùò Ks   ‰'B7c                 ó¨  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}d}d}t        || j                  «       t        || j                  |d   «       t        | j                  ||g«      }t        || j                  «       | j                  t        |j                  dd¬«      «      |d   j                  h«       y c c}w )	Nrp  r‹   rZ  Údelete_groupr   rŒ   Trê   ©r   rn   ro   r   r*   r   r   r)   rí   r0   rŒ   ©r1   rs  rŒ   rù   Úperm_globalr»   rn   s          r5   Ú6test_has_global_permission_and_object_based_permissionzHGetObjectsForUser.test_has_global_permission_and_object_based_permission�  s´   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJà)ˆØ!ˆÜ�K §¡Ô+Ü�H˜dŸi™i¨°©Ô3Ü& t§y¡y°;ÀÐ2IÓJˆÜ�K §¡Ô+Ø×Ñœ˜W×0Ñ0°¸dÐ0ÓCÓDØ  ™)Ÿ.™.Ð)õ	+ùò Krt  c                 óº  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}d}d}t        || j                  «       t        || j                  |d   «       t        | j                  ||gdd¬«      }t        || j                  «       | j                  t        |«      t        t         j                  j                  «       «      «       y c c}w )Nrp  r‹   rZ  rv  r   T)r~  Úaccept_global_permsr‡  rŒ  s          r5   Ú?test_has_global_permission_and_object_based_permission_any_permzQGetObjectsForUser.test_has_global_permission_and_object_based_permission_any_perm�  s³   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJà)ˆà&ˆÜ�K §¡Ô+Ü�H˜dŸi™i¨°©Ô3Ü&Ø�I‰I˜ XÐ.¸ÐSWôYˆä�K §¡Ô+Ø×Ñœ˜W›ÜœUŸ]™]×.Ñ.Ó0Ó1õ	3ùò Ks   ‰'Cc                 óª  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}d}d}t        || j                  «       t        || j                  |d   «       t        | j                  |gd¬«      }t        || j                  «       | j                  t        |j                  dd¬	«      «      |d   j                  h«       y c c}w )
Nrp  r‹   rv  r   F©r�  rŒ   Trê   r‹  rŒ  s          r5   Ú6test_object_based_permission_without_global_permissionzHGetObjectsForUser.test_object_based_permission_without_global_permission¬  s¶   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJà)ˆØ&ˆÜ�K §¡Ô+Ü�H˜dŸi™i¨°©Ô3Ü&Ø�I‰I˜�z°uô>ˆä�K §¡Ô+Ø×Ñœ˜W×0Ñ0°¸dÐ0ÓCÓDØ  ™)Ÿ.™.Ð)õ	+ùò Ks   ‰'Cc                 ó¨  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]'  }| j                  j                  j                  |«       Œ) t        t        j                  j                  «       j                  d«      «      }t        d| j                  «       t        d| j                  |d   «       t        d| j                  |d   «       t        d| j                  |d   «       t        d| j                  |d	   «       t        d|d   |d
   «       t        d|d   |d
   «       t        d|d	   |d   «       t        d|d   |d   «       t        | j                  ddgd¬«      }| j                  t        |j                  dd¬«      «      |d   j                  |d   j                  |d	   j                  h«       y c c}w )Nrp  r‹   r�  rc   rQ   r   r$   rR   r#   r%   r&   rd   Tr“  rê   r‚  ©r1   rs  rŒ   rù   rS   rD  rn   s          r5   Ú/test_object_based_permission_with_groups_2permszAGetObjectsForUser.test_object_based_permission_with_groups_2permsº  s   € Ú4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	(ˆEØ�I‰I×Ñ× Ñ  Õ'ð	(ô ”k×)Ñ)×-Ñ-Ó/×8Ñ8¸Ó>Ó?ˆÜÐ5°t·y±yÔAÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?äÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ä& t§y¡yØ(IØ(Ið(KØ`dôfˆð 	×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø�A‰Y�\‰\˜6 !™9Ÿ<™<¨°©¯©Ð6õ	8ùò' Ks   ‰'Gc                 óæ  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]'  }| j                  j                  j                  |«       Œ) t        t        j                  j                  «       j                  d«      «      }t        d| j                  «       t        d| j                  |d   «       t        d| j                  |d   «       t        d| j                  |d   «       t        d| j                  |d	   «       t        d
| j                  |d   «       t        d|d   |d   «       t        d|d   |d   «       t        d|d	   |d   «       t        d|d   |d   «       t        d
|d   |d   «       t        | j                  g d¢d¬«      }| j                  t        |j                  dd¬«      «      |d   j                  |d   j                  h«       y c c}w )Nrp  r‹   r�  rc   rQ   r   r$   rR   r#   rP   r%   r&   ©rc   rd   úcontenttypes.add_contenttypeTr“  rê   r‚  r–  s          r5   Ú/test_object_based_permission_with_groups_3permszAGetObjectsForUser.test_object_based_permission_with_groups_3permsÓ  sÀ  € â4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	(ˆEØ�I‰I×Ñ× Ñ  Õ'ð	(ô ”k×)Ñ)×-Ñ-Ó/×8Ñ8¸Ó>Ó?ˆÜÐ5°t·y±yÔAÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ÜÐ(¨$¯)©)°V¸A±YÔ?ô 	Ð% t§y¡y°&¸±)Ô<äÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ(¨&°©)°V¸A±YÔ?ÜÐ% v¨a¡y°&¸±)Ô<ä& t§y¡yò(kð AEôFˆð 	×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø�A‰Y�\‰\˜6 !™9Ÿ<™<Ð(õ	*ùò/ Ks   ‰'G.c                 ó€  — t         j                  j                  d¬«      }t        d| j                  |«       t        | j                  d«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  dd¬«      «      |j                  h«       y	)
z|
        Verify that the function works when the objects that should be returned
        have varchar primary keys.
        Útestprimarykey©Úchar_pkÚadd_charpkmodelútestapp.add_charpkmodelr$   r  Trê   N©r   rn   ro   r   r*   r   r)   rx   r,   re   r   rí   r0   r  ©r1   Úobj_with_char_pkrn   s      r5   Útest_varchar_primary_keyz*GetObjectsForUser.test_varchar_primary_keyñ  sŸ   € ô
 '×.Ñ.×5Ñ5Ø$ð 6ó &ÐäÐ% t§y¡yÐ2BÔCä& t§y¡yÐ2KÓLˆØ×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø× Ñ Ð!õ	#r7   c                 ó|  — t         j                  j                  «       }t        d| j                  |«       t        | j                  d«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  dd¬«      «      |j                  h«       y)zy
        Verify that the function works when the objects that should be returned
        have uuid primary keys.
        Úadd_uuidpkmodelútestapp.add_uuidpkmodelr$   r  Trê   N©r   rn   ro   r   r*   r   r)   rx   r,   re   r   rí   r0   r  ©r1   Úobj_with_uuid_pkrn   s      r5   Útest_uuid_primary_keyz'GetObjectsForUser.test_uuid_primary_key  s•   € ô
 '×.Ñ.×5Ñ5Ó7ÐÜÐ% t§y¡yÐ2BÔCä& t§y¡yÐ2KÓLˆØ×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø× Ñ Ð!õ	#r7   c                 óˆ  — t         j                  j                  d¬«      }t        d| j                  |«       t        | j                  ddgd¬«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  d	d¬
«      «      |j                  h«       y)z–
        Verify that the function works with any_perm set to True when the
        objects that should be returned have varchar primary keys.
        r�  rž  r   r¡  útestapp.change_charpkmodelTr}  r$   r  rê   Nr¢  r£  s      r5   Ú&test_varchar_primary_key_with_any_permz8GetObjectsForUser.test_varchar_primary_key_with_any_perm  s­   € ô
 '×.Ñ.×5Ñ5Ø$ð 6ó &ÐäÐ% t§y¡yÐ2BÔCä&Ø�I‰IØ&Ð(DÐEØôˆð 	×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø× Ñ Ð!õ	#r7   c                 ó„  — t         j                  j                  «       }t        d| j                  |«       t        | j                  ddgd¬«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  dd¬«      «      |j                  h«       y	)
z“
        Verify that the function works with any_perm set to True when the
        objects that should be returned have uuid primary keys.
        r§  r¨  útestapp.change_uuidpkmodelTr}  r$   r  rê   Nr©  rª  s      r5   Ú#test_uuid_primary_key_with_any_permz5GetObjectsForUser.test_uuid_primary_key_with_any_perm#  s£   € ô
 '×.Ñ.×5Ñ5Ó7ÐÜÐ% t§y¡yÐ2BÔCä&Ø�I‰IØ&Ð(DÐEØôˆð 	×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø× Ñ Ð!õ	#r7   c                 óæ  — t         j                  j                  d¬«      }t        d| j                  |«       | j
                  j                  j                  | j                  «       t        | j
                  ddgd¬«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  d	d¬
«      «      |j                   h«       y)z´
        Verify that the function works when the objects that should be returned
        have varchar primary keys, and those objects are due to the user's
        groups.
        r�  rž  r   r¡  r®  Tr}  r$   r  rê   N)r   rn   ro   r   rS   r*   rù   r”   r   r)   rx   r,   re   r   rí   r0   r  r£  s      r5   Ú*test_varchar_primary_key_with_group_valuesz<GetObjectsForUser.test_varchar_primary_key_with_group_values5  sÉ   € ô '×.Ñ.×5Ñ5Ø$ð 6ó &ÐäÐ% t§z¡zÐ3CÔDØ�	‰	×Ñ×Ñ˜TŸZ™ZÔ(ä&Ø�I‰IØ&Ð(DÐEØôˆð 	×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø× Ñ Ð!õ	#r7   c                 óf  — t         j                  j                  d¬«      }t        d| j                  |«       t         j                  j                  d¬«      }t        | j                  dt         «      }| j                  dt        |«      «       | j                  ||«       | j                  ||«       y )NÚchild1r‹   ztestapp.change_childtestmodelÚchild2r$   )
r   rn   ro   r   r*   r   r)   rx   ÚassertInÚassertNotIn)r1   Úchild_with_permÚchild_without_permÚchildrens       r5   Útest_model_inheritancez(GetObjectsForUser.test_model_inheritanceJ  s�   € Ü(×0Ñ0×7Ñ7¸XÐ7ÓFˆÜÐ3°T·Y±YÀÔPÜ+×3Ñ3×:Ñ:ÀÐ:ÓIÐä'¨¯	©	Ð3RÔTbÓcˆà×Ñ˜œC ›MÔ*Ø�‰�o xÔ0Ø×ÑÐ+¨XÕ6r7   c                 óâ  — t         j                  j                  «       }t        d| j                  |«       | j
                  j                  j                  | j                  «       t        | j
                  ddgd¬«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |j                  dd¬«      «      |j                   h«       y	)
z±
        Verify that the function works when the objects that should be returned
        have uuid primary keys, and those objects are due to the user's
        groups.
        r§  r¨  r±  Tr}  r$   r  rê   N)r   rn   ro   r   rS   r*   rù   r”   r   r)   rx   r,   re   r   rí   r0   r  rª  s      r5   Ú'test_uuid_primary_key_with_group_valuesz9GetObjectsForUser.test_uuid_primary_key_with_group_valuesU  s¿   € ô '×.Ñ.×5Ñ5Ó7ÐÜÐ% t§z¡zÐ3CÔDØ�	‰	×Ñ×Ñ˜TŸZ™ZÔ(ä&Ø�I‰IØ&Ð(DÐEØôˆð 	×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�×#Ñ# D¨tÐ#Ó4Ó5Ø× Ñ Ð!õ	#r7   c                 óT   — | j                  t        t        | j                  ddg«       y ©NrQ  rZ  )rC   r   r   r*   rE   s    r5   Útest_exception_different_ctypesz1GetObjectsForUser.test_exception_different_ctypesi  s'   € Ø×ÑÔ/Ô1EØŸ)™)Ð&>Ð@SÐ%Tõ	Vr7   c                 ó°  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]  }t        d| j                  |«       Œ t        | j                  g t         «      }| j                  t        |«      t        |«      «       | j                  t        |t        «      «       | j                  t        |«      t        |«      «       y c c}w ©Nrp  r‹   r8  rq  rr  s         r5   Útest_has_any_permissionsz*GetObjectsForUser.test_has_any_permissionsm  s¬   € â4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	:ˆEÜ˜¨¯	©	°5Õ9ð	:ô ' t§y¡y°"´eÓ<ˆØ×Ñœ˜W›¤s¨6£{Ô3Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�‹LÜ�‹Kõ	ùò Kó   ‰'Cc                 ó  — t        d| j                  | j                  «       t        | j                  dgt        «      }| j                  |D �cg c]  }|j                  ‘Œ c}| j                  j                  g«       y c c}w ©Nrc   rQ   re  rf  s      r5   Útest_short_codenames_with_klassz1GetObjectsForUser.test_short_codenames_with_klass{  s]   € ÜÐ5°t·y±yÀ$Ç*Á*ÔMä& t§y¡yØ(<Ð'=¼{óLˆà×Ñ¨gÖ6 s˜#Ÿ(›(Ò6¸¿¹¿¹Ð8IÕJùÒ6rh  c                 ó°  — g d¢}|D �cg c]"  }t         j                  j                  |¬«      ‘Œ$ }}|D ]  }t        d| j                  |«       Œ t        | j                  g t         «      }| j                  t        |«      t        |«      «       | j                  t        |t        «      «       | j                  t        |«      t        |«      «       y c c}w rÄ  )r   rn   ro   r   rS   r   r)   rx   r,   re   r   rí   rr  s         r5   Útest_has_any_group_permissionsz0GetObjectsForUser.test_has_any_group_permissions‚  s¬   € â4ˆØ>IÖJ°d”%—-‘-×&Ñ&¨DÐ&Õ1ÐJˆÐJØò 	;ˆEÜ˜¨¯
©
°EÕ:ð	;ô (¨¯
©
°B¼Ó>ˆØ×Ñœ˜W›¤s¨6£{Ô3Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�‹LÜ�‹Kõ	ùò KrÆ  N)(r8   r9   r:   r�   rE  rI  rK  rM  rU  rW  r[  r]  ra  rc  rg  rj  rl  rn  rï   rx  r{  r  r…  rˆ  rŽ  r‘  r”  r—  r›  r¥  r¬  r¯  r²  r´  r½  r¿  rÂ  rÅ  rÉ  rË  r;   r7   r5   r>  r>  ¹  sÂ   „ ò>ò4ò4ò/ò/ò0ò0òBò,ò
ò:òKòKòKò7òòòò.ò&2òP
3ò+ò3ò+ò8ò2*ò<#ò #ò#ò&#ò$#ò*	7ò#ò(VòòKór7   r>  c                   óŽ   — 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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGetObjectsForGroupz/
    Tests get_objects_for_group function.
    c                 ó¤  — t         j                  j                  dd¬«      | _        t         j                  j                  dd¬«      | _        t         j                  j                  dd¬«      | _        t        j                  j                  d¬«      | _        t        j                  j                  d¬«      | _        t        j                  j                  d	¬«      | _	        t        j                  j                  d
¬«      | _        t        j                  j                  d¬«      | _        t        j                  j                  d¬«      | _        y )NrÑ   rÒ   rÓ   rÕ   r7  rÖ   r‡   r×   rØ   rÙ   r‹   rÚ   rÛ   )r   rn   ro   rÝ   rÞ   Úobj3r.   rÖ   r×   rØ   r   rÙ   rÚ   rÛ   rE   s    r5   r�   zGetObjectsForGroup.setUp–  s  € Ü×'Ñ'×.Ñ.ØÐ#3ð /ó 5ˆŒ	ä×'Ñ'×.Ñ.ØÐ#3ð /ó 5ˆŒ	ä×'Ñ'×.Ñ.ØÐ#3ð /ó 5ˆŒ	ä—\‘\×(Ñ(°'Ð(Ó:ˆŒ
Ü—\‘\×(Ñ(°'Ð(Ó:ˆŒ
Ü—\‘\×(Ñ(°'Ð(Ó:ˆŒ
Ü—m‘m×*Ñ*°Ð*Ó9ˆŒÜ—m‘m×*Ñ*°Ð*Ó9ˆŒÜ—m‘m×*Ñ*°Ð*Ó9ˆ�r7   c                 ój   — t        d«      dg}| j                  t        t        | j                  |«       y rO  ©r
   rC   r   r   rÙ   rS  s     r5   rU  z#GetObjectsForGroup.test_mixed_perms¤  s3   € ä-¨hÓ7Ø$ð
ˆ	ð 	×ÑÔ/Ô1FØŸ+™+ yõ	2r7   c                 ój   — t        d«      dg}| j                  t        t        | j                  |«       y )NrP  z,contenttypes.contenttypes.change_contenttyperÑ  rS  s     r5   rW  z-GetObjectsForGroup.test_perms_with_mixed_apps¬  s3   € ä-¨hÓ7Ø:ð
ˆ	ð 	×ÑÔ/Ô1FØŸ+™+ yõ	2r7   c                 ó\   — | j                  t        t        | j                  dgt        «       y rY  )rC   r   r   rÙ   r.   rE   s    r5   r[  z-GetObjectsForGroup.test_mixed_perms_and_klass´  s&   € Ø×ÑÔ/Ô1FØŸ+™+Ð(;Ð'<¼dõ	Dr7   c                 óR   — | j                  t        t        | j                  dg«       y r®   )rC   r   r   rÙ   rE   s    r5   r]  z.GetObjectsForGroup.test_no_app_label_nor_klass¸  s!   € Ø×Ñœ-Ô)>ÀÇÁØ/Ð0õ	2r7   c           	      ó|   — | j                  t        t        | j                  g t        «      «      t        «       «       y r_  )r)   rí   r   rÙ   r   rE   s    r5   ra  z,GetObjectsForGroup.test_empty_perms_sequence¼  s+   € Ø×ÑÜÔ% d§k¡k°2´{ÓCÓDÜ‹Eõ	
r7   c           	      óä   — d}t        || j                  | j                  «       | j                  t	        t        | j                  |«      «      t	        t        | j                  |g«      «      «       y ri   )r   rÙ   rÝ   r)   rí   r   rf   s     r5   rc  z$GetObjectsForGroup.test_perms_singleÂ  sS   € Ø0ˆÜ�D˜$Ÿ+™+ t§y¡yÔ1Ø×ÑÜÔ% d§k¡k°4Ó8Ó9ÜÔ% d§k¡k°D°6Ó:Ó;õ	
r7   c                 ó  — t        d| j                  | j                  «       t        | j                  dgt        «      }| j                  |D �cg c]  }|j                  ‘Œ c}| j                  j                  g«       y c c}w ri   )r   rÙ   rÝ   r   r   r)   rŒ   rf  s      r5   rg  z&GetObjectsForGroup.test_klass_as_modelÊ  s]   € ÜÐ5°t·{±{ÀDÇIÁIÔNä'¨¯©Ø)JÐ(KÌ[óZˆà×Ñ¨gÖ6 s˜#Ÿ(›(Ò6¸¿¹¿¹Ð8HÕIùÒ6rh  c                 óÞ   — t        d| j                  | j                  «       t        | j                  dgt        j
                  «      }| j                  t        |«      | j                  g«       y rÈ  )r   rÙ   rÝ   r   r   rn   r)   r-   r`  s     r5   rj  z(GetObjectsForGroup.test_klass_as_managerÑ  sP   € ÜÐ5°t·{±{ÀDÇIÁIÔNÜ'¨¯©Ð6JÐ5KÜ(3×(;Ñ(;ó=ˆà×Ñœ˜g›¨¯©¨Õ4r7   c                 óú   — t        d| j                  | j                  «       t        | j                  dgt        j
                  j                  «       «      }| j                  t        |«      | j                  g«       y rÈ  )	r   rÙ   rÝ   r   r   rn   r—   r)   r-   r`  s     r5   rl  z)GetObjectsForGroup.test_klass_as_queryset×  sZ   € ÜÐ5°t·{±{ÀDÇIÁIÔNÜ'¨¯©Ð6JÐ5KÜ(3×(;Ñ(;×(?Ñ(?Ó(AóCˆà×Ñœ˜g›¨¯©¨Õ4r7   c                 óp   — t        | j                  dg«      }| j                  t        |t        «      «       y ri   )r   rÙ   r,   re   r   r`  s     r5   rn  z/GetObjectsForGroup.test_ensure_returns_querysetÝ  s,   € Ü'Ø�K‰KÐ;Ð<ó>ˆà�‰œ
 7¬HÓ5Õ6r7   c                 óŠ  — t        d| j                  | j                  «       t        d| j                  | j                  «       t	        | j                  d«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  t        |«      | j                  | j                  h«       y )NrQ   rc   r#   )r   rÙ   rÝ   rÞ   r   r)   rx   r,   re   r   rí   r`  s     r5   rï   zGetObjectsForGroup.test_simpleâ  sŒ   € ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAä'Ø�K‰KÐ:ó<ˆà×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×ÑÜ�‹LØ�Y‰Y˜Ÿ	™	Ð"õ	$r7   c                 ó  — | j                  «        t        d| j                  | j                  «       t	        | j                  d«      }| j                  t        |«      d«       | j                  |d   | j                  «       y )NrQ   rc   r$   r   )rï   r   rÙ   rÝ   r   r)   rx   rÞ   r`  s     r5   r1  z,GetObjectsForGroup.test_simple_after_removalî  sc   € Ø×ÑÔÜÐ(¨$¯+©+°t·y±yÔAÜ'Ø�K‰KÐ:ó<ˆà×Ñœ˜W› qÔ)Ø×Ñ˜ ™ T§Y¡YÕ/r7   c                 ó¬  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t	        | j                  ddg«      }| j                  t        |«      d«       | j                  t        |t        «      «       | j                  |d   | j                  «       y )NrQ   rR   rc   rd   r$   r   )
r   rÙ   rÝ   rÞ   r   r)   rx   r,   re   r   r`  s     r5   rx  z/GetObjectsForGroup.test_multiple_perms_to_checkö  s�   € ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAä'¨¯©Ø-Ø-ð6/ó 0ˆð 	×Ñœ˜W› qÔ)Ø�‰œ
 7¬HÓ5Ô6Ø×Ñ˜ ™ T§Y¡YÕ/r7   c                 ó  — t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t        | j                  ddgd¬«      }| j                  t        |t        «      «       | j                  |j                  dd	«      D �cg c]  }|‘Œ c}| j                  | j                  g«       y c c}w )
NrQ   rR   rP   rc   rd   Tr}  rÃ   r�  )r   rÙ   rÝ   rÞ   rÏ  r   r,   re   r   r)   rƒ  rf  s      r5   r  z6GetObjectsForGroup.test_any_of_multiple_perms_to_check  sÆ   € ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAÜÐ% t§{¡{°D·I±IÔ>ÜÐ(¨$¯+©+°t·y±yÔAä'¨¯©Ø)JØ)Jð)LØVZô\ˆð 	�‰œ
 7¬HÓ5Ô6Ø×Ñ¨×)9Ñ)9¸+ÀtÓ)LÖM #š#ÒMØŸ)™) T§Y¡YÐ/õ	1ùÒMs   Ã	Dc                 óÞ  — t        d| j                  | j                  «       t        d| j                  | j                  «       | j                  t        t        | j                  d«      «      | j                  h«       | j                  t        t        | j                  d«      «      t        «       «       | j                  t        t        | j                  d«      «      | j                  h«       y )NrQ   rR   rc   rd   )r   rÙ   rÝ   rÚ   rÞ   r)   rí   r   rE   s    r5   Ú-test_results_for_different_groups_are_correctz@GetObjectsForGroup.test_results_for_different_groups_are_correct  s©   € ÜÐ(¨$¯+©+°t·y±yÔAÜÐ(¨$¯+©+°t·y±yÔAà×ÑœÔ2°4·;±;Ð@aÓbÓcØŸ)™)˜ô	&à×ÑœÔ2°4·;±;Ð@aÓbÓcÜ›ô	 à×ÑœÔ2°4·;±;Ð@aÓbÓcØŸ)™)˜õ	&r7   c                 óÞ   — t        d| j                  «       t        | j                  dg«      }| j                  t	        |«      t	        t
        j                  j                  «       «      «       y ri   )r   rÙ   r   r)   rí   r   rn   r—   r`  s     r5   Útest_has_global_permissionz-GetObjectsForGroup.test_has_global_permission  sS   € ÜÐ5°t·{±{ÔCä'Ø�K‰KÐ;Ð<ó>ˆà×Ñœ˜W›Üœk×1Ñ1×5Ñ5Ó7Ó8õ	:r7   c                 óò   — t        d| j                  «       t        d| j                  | j                  «       t        | j                  ddgd¬«      }| j	                  t        |«      | j                  h«       y )Nrc   rd   Fr}  )r   rÙ   rÝ   r   r)   rí   r`  s     r5   rŽ  zIGetObjectsForGroup.test_has_global_permission_and_object_based_permission"  sc   € ÜÐ5°t·{±{ÔCÜÐ5°t·{±{ÀDÇIÁIÔNä'¨¯©Ø(IÐKlð6nØx}ôˆà×Ñœ˜W›ØŸ9™9˜+õ	'r7   c                 ó&  — t        d| j                  «       t        d| j                  | j                  «       t        | j                  ddgd¬«      }| j	                  t        |«      t        t        j                  j                  «       «      «       y )Nrc   rd   Tr}  )	r   rÙ   rÝ   r   r)   rí   r   rn   r—   r`  s     r5   r‘  zRGetObjectsForGroup.test_has_global_permission_and_object_based_permission_any_perm+  sq   € ÜÐ5°t·{±{ÔCÜÐ5°t·{±{ÀDÇIÁIÔNä'¨¯©Ø(IÐKlð6nØx|ô~ˆà×Ñœ˜W›Üœk×1Ñ1×5Ñ5Ó7Ó8õ	:r7   c                 ó.  — t        d| j                  «       t        d| j                  | j                  «       t        d| j                  | j                  «       t	        | j                  g d¢d¬«      }| j                  t        |«      t        «       «       y )Nrc   rd   rš  r™  Fr}  )r   rÙ   rÝ   rÞ   r   r)   rí   r`  s     r5   Ú=test_has_global_permission_and_object_based_permission_3permszPGetObjectsForGroup.test_has_global_permission_and_object_based_permission_3perms4  sr   € ÜÐ5°t·{±{ÔCÜÐ5°t·{±{ÀDÇIÁIÔNÜÐ2°D·K±KÀÇÁÔKä'¨¯©ò 6Nð Y^ô_ˆà×Ñœ˜W›Ü›%õ	!r7   c                 óT   — | j                  t        t        | j                  ddg«       y rÁ  )rC   r   r   rÙ   rE   s    r5   rÂ  z2GetObjectsForGroup.test_exception_different_ctypes>  s'   € Ø×ÑÔ/Ô1FØŸ+™+Ð(@ÐBUÐ'Võ	Xr7   N)r8   r9   r:   r‚   r�   rU  rW  r[  r]  ra  rc  rg  rj  rl  rn  rï   r1  rx  r  rà  râ  rŽ  r‘  ræ  rÂ  r;   r7   r5   rÍ  rÍ  ‘  ss   „ ñò:ò2ò2òDò2ò
ò
òJò5ò5ò7ò

$ò0ò
0ò1ò	&ò:ò'ò:ò!óXr7   rÍ  )9ru   r'   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Ú"django.contrib.contenttypes.modelsr   Údjango.db.models.queryr   Údjango.testr   Úguardian.shortcutsr   Úguardian.corer	   Úguardian.compatr
   r   r   r   r   r   r   r   r   r   r   Úguardian.exceptionsr   r   r   r   Úguardian.testapp.modelsr   r   r   Ú guardian.testapp.tests.test_corer   Úguardian.modelsr   r   r.   Ú_metarÃ   Úuser_app_labelÚ
model_namer  r    r=   r„   rª   rÆ   rÎ   r,  r>  rÍ  r;   r7   r5   ú<module>r÷     s  ðÛ ã Ý .Ý 4Ý :Ý +Ý  å 2Ý 1Ý =Ý %Ý *Ý *Ý (Ý -Ý .Ý 3Ý 4Ý 3Ý 4Ý 5Ý /Ý -Ý >ß LÑ LÝ Eß -ñ Ó€Ø—‘×%Ñ%€Ø—:‘:×(Ñ(Ð ô<Ð-ô <ô&mGÐ-ô mGô`3KÐ'?ô 3KôlGCÐ-ô GCôT+Ð+ô +ô,[5˜Hô [5ô|Z=˜ô Z=ôzU˜ô UôpoX˜õ oXr7   