ó
    |ch|%  ã                   ód  • S r SSKJr  SSKJr  Sr " S S5      r " S S\5      r " S	 S
\5      r " S S5      r	 " S S5      r
 " S S5      r " S S\\5      r " S S\S9r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      rg$)%z2
Provides a set of pluggable permission policies.
é    )ÚHttp404)Ú
exceptions)ÚGETÚHEADÚOPTIONSc                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	ÚOperationHolderMixiné   c                 ó"   • [        [        X5      $ ©N©ÚOperandHolderÚAND©ÚselfÚothers     Úc/var/www/djangovue.mamus.xyz/django/venv/lib/python3.13/site-packages/rest_framework/permissions.pyÚ__and__ÚOperationHolderMixin.__and__   s   € ÜœS $Ó.Ð.ó    c                 ó"   • [        [        X5      $ r   ©r   ÚORr   s     r   Ú__or__ÚOperationHolderMixin.__or__   s   € ÜœR Ó-Ð-r   c                 ó"   • [        [        X5      $ r   r   r   s     r   Ú__rand__ÚOperationHolderMixin.__rand__   s   € ÜœS %Ó.Ð.r   c                 ó"   • [        [        X5      $ r   r   r   s     r   Ú__ror__ÚOperationHolderMixin.__ror__   s   € ÜœR Ó-Ð-r   c                 ó"   • [        [        U 5      $ r   )ÚSingleOperandHolderÚNOT©r   s    r   Ú
__invert__ÚOperationHolderMixin.__invert__   s   € Ü"¤3¨Ó-Ð-r   © N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r    r&   Ú__static_attributes__r(   r   r   r	   r	      s   † ò/ò.ò/ò.õ.r   r	   c                   ó    • \ rS rSrS rS rSrg)r#   é   c                 ó   • Xl         X l        g r   )Úoperator_classÚ	op1_class)r   r1   r2   s      r   Ú__init__ÚSingleOperandHolder.__init__   s   € Ø,ÔØ"�r   c                 óH   • U R                   " U0 UD6nU R                  U5      $ r   ©r2   r1   )r   ÚargsÚkwargsÚop1s       r   Ú__call__ÚSingleOperandHolder.__call__!   s&   € Ø�nŠn˜dÐ- fÑ-ˆØ×"Ñ" 3Ó'Ð'r   r6   N)r)   r*   r+   r,   r3   r:   r-   r(   r   r   r#   r#      s   † ò#õ(r   r#   c                   ó,   • \ rS rSrS rS rS rS rSrg)r   é&   c                 ó(   • Xl         X l        X0l        g r   )r1   r2   Ú	op2_class)r   r1   r2   r?   s       r   r3   ÚOperandHolder.__init__'   s   € Ø,ÔØ"ŒØ"�r   c                 ól   • U R                   " U0 UD6nU R                  " U0 UD6nU R                  X45      $ r   ©r2   r?   r1   )r   r7   r8   r9   Úop2s        r   r:   ÚOperandHolder.__call__,   s9   € Ø�nŠn˜dÐ- fÑ-ˆØ�nŠn˜dÐ- fÑ-ˆØ×"Ñ" 3Ó,Ð,r   c                 óâ   • [        U[        5      =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )Ú
isinstancer   r1   r2   r?   r   s     r   Ú__eq__ÚOperandHolder.__eq__1   sV   € ä�uœmÓ,÷ .Ø×Ñ 5×#7Ñ#7Ñ7÷.à�N‰N˜eŸo™oÑ-÷.ð �N‰N˜eŸo™oÑ-ð		
r   c                 óZ   • [        U R                  U R                  U R                  45      $ r   )Úhashr1   r2   r?   r%   s    r   Ú__hash__ÚOperandHolder.__hash__9   s"   € Ü�T×(Ñ(¨$¯.©.¸$¿.¹.ÐIÓJÐJr   rB   N)	r)   r*   r+   r,   r3   r:   rG   rK   r-   r(   r   r   r   r   &   s   † ò#ò
-ò

õKr   r   c                   ó&   • \ rS rSrS rS rS rSrg)r   é=   c                 ó   • Xl         X l        g r   ©r9   rC   ©r   r9   rC   s      r   r3   ÚAND.__init__>   ó   € ØŒØ�r   c                 ó|   • U R                   R                  X5      =(       a    U R                  R                  X5      $ r   ©r9   Úhas_permissionrC   ©r   ÚrequestÚviews      r   rV   ÚAND.has_permissionB   ó0   € à�H‰H×#Ñ# GÓ2÷ 3Ø�H‰H×#Ñ# GÓ2ð	
r   c                 ó€   • U R                   R                  XU5      =(       a    U R                  R                  XU5      $ r   )r9   Úhas_object_permissionrC   ©r   rX   rY   Úobjs       r   r]   ÚAND.has_object_permissionH   s4   € à�H‰H×*Ñ*¨7¸#Ó>÷ ?Ø�H‰H×*Ñ*¨7¸#Ó>ð	
r   rP   N©r)   r*   r+   r,   r3   rV   r]   r-   r(   r   r   r   r   =   s   † òò
õ
r   r   c                   ó&   • \ rS rSrS rS rS rSrg)r   éO   c                 ó   • Xl         X l        g r   rP   rQ   s      r   r3   ÚOR.__init__P   rS   r   c                 ó|   • U R                   R                  X5      =(       d    U R                  R                  X5      $ r   rU   rW   s      r   rV   ÚOR.has_permissionT   r[   r   c                 ó  • U R                   R                  X5      =(       a    U R                   R                  XU5      =(       d>    U R                  R                  X5      =(       a    U R                  R                  XU5      $ r   )r9   rV   r]   rC   r^   s       r   r]   ÚOR.has_object_permissionZ   sf   € à�H‰H×#Ñ# GÓ2÷ CØ—‘×.Ñ.¨w¸cÓB÷
ð �H‰H×#Ñ# GÓ2÷ CØ—‘×.Ñ.¨w¸cÓBð	
r   rP   Nra   r(   r   r   r   r   O   s   † òò
õ
r   r   c                   ó&   • \ rS rSrS rS rS rSrg)r$   éd   c                 ó   • Xl         g r   ©r9   )r   r9   s     r   r3   ÚNOT.__init__e   s   € Ø�r   c                 óB   • U R                   R                  X5      (       + $ r   )r9   rV   rW   s      r   rV   ÚNOT.has_permissionh   s   € Ø—8‘8×*Ñ*¨7Ó9Ô9Ð9r   c                 óD   • U R                   R                  XU5      (       + $ r   )r9   r]   r^   s       r   r]   ÚNOT.has_object_permissionk   s   € Ø—8‘8×1Ñ1°'ÀÓEÔEÐEr   rm   Nra   r(   r   r   r$   r$   d   s   † òò:õFr   r$   c                   ó   • \ rS rSrSrg)ÚBasePermissionMetaclasséo   r(   N)r)   r*   r+   r,   r-   r(   r   r   rt   rt   o   s   † Úr   rt   c                   ó$   • \ rS rSrSrS rS rSrg)ÚBasePermissionés   z@
A base class from which all permission classes should inherit.
c                 ó   • g©z<
Return `True` if permission is granted, `False` otherwise.
Tr(   rW   s      r   rV   ÚBasePermission.has_permissionx   ó   € ð r   c                 ó   • grz   r(   r^   s       r   r]   Ú$BasePermission.has_object_permission~   r|   r   r(   N)r)   r*   r+   r,   Ú__doc__rV   r]   r-   r(   r   r   rw   rw   s   s   † ñòõr   rw   )Ú	metaclassc                   ó   • \ rS rSrSrS rSrg)ÚAllowAnyé…   z¥
Allow any access.
This isn't strictly required, since you could use an empty
permission_classes list, but it's useful because it makes the intention
more explicit.
c                 ó   • g)NTr(   rW   s      r   rV   ÚAllowAny.has_permission�   s   € Ør   r(   N©r)   r*   r+   r,   r   rV   r-   r(   r   r   r‚   r‚   …   s   † ñõr   r‚   c                   ó   • \ rS rSrSrS rSrg)ÚIsAuthenticatedé‘   z,
Allows access only to authenticated users.
c                 óf   • [        UR                  =(       a    UR                  R                  5      $ r   )ÚboolÚuserÚis_authenticatedrW   s      r   rV   ÚIsAuthenticated.has_permission–   s    € Ü�G—L‘L×B W§\¡\×%BÑ%BÓCÐCr   r(   Nr†   r(   r   r   rˆ   rˆ   ‘   s   † ñõDr   rˆ   c                   ó   • \ rS rSrSrS rSrg)ÚIsAdminUseréš   z$
Allows access only to admin users.
c                 óf   • [        UR                  =(       a    UR                  R                  5      $ r   )r‹   rŒ   Úis_staffrW   s      r   rV   ÚIsAdminUser.has_permissionŸ   s    € Ü�G—L‘L×: W§\¡\×%:Ñ%:Ó;Ð;r   r(   Nr†   r(   r   r   r�   r�   š   s   † ñõ<r   r�   c                   ó   • \ rS rSrSrS rSrg)ÚIsAuthenticatedOrReadOnlyé£   zD
The request is authenticated as a user, or is a read-only request.
c                 óš   • [        UR                  [        ;   =(       d)    UR                  =(       a    UR                  R                  5      $ r   )r‹   ÚmethodÚSAFE_METHODSrŒ   r�   rW   s      r   rV   Ú(IsAuthenticatedOrReadOnly.has_permission¨   s9   € ÜØ�N‰NœlÑ*÷ *Ø�L‰L÷ *Ø�L‰L×)Ñ)ó
ð 	
r   r(   Nr†   r(   r   r   r–   r–   £   s   † ñõ
r   r–   c                   óJ   • \ rS rSrSr/ / / S/S/S/S/S.rSrS rS	 rS
 r	Sr
g)ÚDjangoModelPermissionsé°   aa  
The request is authenticated using `django.contrib.auth` permissions.
See: https://docs.djangoproject.com/en/dev/topics/auth/#permissions

It ensures that the user is authenticated, and has the appropriate
`add`/`change`/`delete` permissions on the model.

This permission can only be applied against view classes that
provide a `.queryset` attribute.
ú %(app_label)s.add_%(model_name)sú#%(app_label)s.change_%(model_name)sú#%(app_label)s.delete_%(model_name)s©r   r   r   ÚPOSTÚPUTÚPATCHÚDELETETc                 óô   • UR                   R                  UR                   R                  S.nXR                  ;  a  [        R
                  " U5      eU R                  U    Vs/ s H  oDU-  PM	     sn$ s  snf )zj
Given a model and an HTTP method, return the list of permission
codes that the user is required to have.
©Ú	app_labelÚ
model_name©Ú_metar©   rª   Ú	perms_mapr   ÚMethodNotAllowed©r   r™   Ú	model_clsr8   Úperms        r   Úget_required_permissionsÚ/DjangoModelPermissions.get_required_permissionsË   sg   € ð #Ÿ™×2Ñ2Ø#Ÿ/™/×4Ñ4ñ
ˆð
 Ÿ™Ó'Ü×-Ò-¨fÓ5Ð5à*.¯.©.¸Ò*@ÓAÒ*@ $�v”Ñ*@ÑAÐAùÒAó   Á$A5c                 óL  • [        US5      (       d8  [        USS 5      c*   SR                  U R                  R                  5      5       e[        US5      (       a?  UR                  5       nUc*   SR                  UR                  R                  5      5       eU$ UR                  $ )NÚget_querysetÚquerysetz[Cannot apply {} on a view that does not set `.queryset` or have a `.get_queryset()` method.z{}.get_queryset() returned None)ÚhasattrÚgetattrÚformatÚ	__class__r)   r¶   r·   )r   rY   r·   s      r   Ú	_querysetÚ DjangoModelPermissions._querysetÚ   sŸ   € Ü�t˜^×,Ñ,Ü�t˜Z¨Ó.Ñ:ð	*ð>ç
‰&�—‘×(Ñ(Ó
)ó		*ð ;ô �4˜×(Ñ(Ø×(Ñ(Ó*ˆHØÑ'ð Ø1×8Ñ8¸¿¹×9PÑ9PÓQóÐ'ð ˆOØ�}‰}Ðr   c                 óH  • UR                   (       a,  UR                   R                  (       d  U R                  (       a  g[        USS5      (       a  gU R	                  U5      nU R                  UR                  UR                  5      nUR                   R                  U5      $ )NFÚ_ignore_model_permissionsT)	rŒ   r�   Úauthenticated_users_onlyr¹   r¼   r²   r™   ÚmodelÚ	has_perms)r   rX   rY   r·   Úpermss        r   rV   Ú%DjangoModelPermissions.has_permissioné   ss   € Ø�|�|Ø�|‰|×,×,°×1N×1NØô �4Ð4°e×<Ñ<Øà—>‘> $Ó'ˆØ×-Ñ-¨g¯n©n¸h¿n¹nÓMˆà�|‰|×%Ñ% eÓ,Ð,r   r(   N)r)   r*   r+   r,   r   r­   rÀ   r²   r¼   rV   r-   r(   r   r   r�   r�   °   sI   † ñ	ð ØØØ3Ð4Ø5Ð6Ø7Ð8Ø8Ð9ñ€Ið  $ÐòBòõ-r   r�   c                   ó   • \ rS rSrSrSrSrg)Ú$DjangoModelPermissionsOrAnonReadOnlyéù   z^
Similar to DjangoModelPermissions, except that anonymous users are
allowed read-only access.
Fr(   N)r)   r*   r+   r,   r   rÀ   r-   r(   r   r   rÆ   rÆ   ù   s   † ñð  %Ór   rÆ   c                   ó@   • \ rS rSrSr/ / / S/S/S/S/S.rS rS rS	rg
)ÚDjangoObjectPermissionsi  a{  
The request is authenticated using Django's object-level permissions.
It requires an object-permissions-enabled backend, such as Django Guardian.

It ensures that the user is authenticated, and has the appropriate
`add`/`change`/`delete` permissions on the object using .has_perms.

This permission can only be applied against view classes that
provide a `.queryset` attribute.
rŸ   r    r¡   r¢   c                 óô   • UR                   R                  UR                   R                  S.nXR                  ;  a  [        R
                  " U5      eU R                  U    Vs/ s H  oDU-  PM	     sn$ s  snf )Nr¨   r«   r¯   s        r   Úget_required_object_permissionsÚ7DjangoObjectPermissions.get_required_object_permissions  se   € à"Ÿ™×2Ñ2Ø#Ÿ/™/×4Ñ4ñ
ˆð
 Ÿ™Ó'Ü×-Ò-¨fÓ5Ð5à*.¯.©.¸Ò*@ÓAÒ*@ $�v”Ñ*@ÑAÐAùÒAr´   c                 óL  • U R                  U5      nUR                  nUR                  nU R                  UR                  U5      nUR                  Xs5      (       dI  UR                  [        ;   a  [        eU R                  SU5      nUR                  Xƒ5      (       d  [        egg)Nr   FT)r¼   rÁ   rŒ   rË   r™   rÂ   rš   r   )	r   rX   rY   r_   r·   r°   rŒ   rÃ   Ú
read_permss	            r   r]   Ú-DjangoObjectPermissions.has_object_permission!  sŠ   € à—>‘> $Ó'ˆØ—N‘Nˆ	Ø�|‰|ˆà×4Ñ4°W·^±^ÀYÓOˆà�~‰~˜e×)Ñ)ð
 �~‰~¤Ó-ô �à×=Ñ=¸eÀYÓOˆJØ—>‘> *×2Ñ2Ü�ð àr   r(   N)	r)   r*   r+   r,   r   r­   rË   r]   r-   r(   r   r   rÉ   rÉ     s<   † ñ	ð ØØØ3Ð4Ø5Ð6Ø7Ð8Ø8Ð9ñ€Iò	Bõr   rÉ   N)r   Údjango.httpr   Úrest_frameworkr   rš   r	   r#   r   r   r   r$   Útypert   rw   r‚   rˆ   r�   r–   r�   rÆ   rÉ   r(   r   r   Ú<module>rÓ      sÔ   ðñõ  å %à)€÷.ñ .ô"(Ð.ô (ôKÐ(ô K÷.
ñ 
÷$
ñ 
÷*Fñ Fô	Ð2°Dô 	ôÐ6ò ô$	ˆ~ô 	ôD�nô Dô<�.ô <ô

 ô 

ôF-˜^ô F-ôR%Ð+Aô %ô9Ð4õ 9r   