Ë
    ûûàg|%  ã                   ój  — d Z ddlmZ ddlmZ dZ G d„ d«      Z G d„ de«      Z G d	„ d
e«      Z G d„ d«      Z	 G d„ d«      Z
 G d„ d«      Z G d„ dee«      Z G d„ de¬«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d „ d!e«      Z G d"„ d#e«      Zy$)%z2
Provides a set of pluggable permission policies.
é    )ÚHttp404)Ú
exceptions)ÚGETÚHEADÚOPTIONSc                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚOperationHolderMixinc                 ó$   — t        t        | |«      S ©N©ÚOperandHolderÚAND©ÚselfÚothers     úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/rest_framework/permissions.pyÚ__and__zOperationHolderMixin.__and__   s   € ÜœS $¨Ó.Ð.ó    c                 ó$   — t        t        | |«      S r   ©r   ÚORr   s     r   Ú__or__zOperationHolderMixin.__or__   s   € ÜœR  uÓ-Ð-r   c                 ó$   — t        t        || «      S r   r   r   s     r   Ú__rand__zOperationHolderMixin.__rand__   s   € ÜœS %¨Ó.Ð.r   c                 ó$   — t        t        || «      S r   r   r   s     r   Ú__ror__zOperationHolderMixin.__ror__   s   € ÜœR ¨Ó-Ð-r   c                 ó"   — t        t        | «      S r   )ÚSingleOperandHolderÚNOT©r   s    r   Ú
__invert__zOperationHolderMixin.__invert__   s   € Ü"¤3¨Ó-Ð-r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r!   © r   r   r	   r	      s   „ ò/ò.ò/ò.ó.r   r	   c                   ó   — e Zd Zd„ Zd„ Zy)r   c                 ó    — || _         || _        y r   )Úoperator_classÚ	op1_class)r   r(   r)   s      r   Ú__init__zSingleOperandHolder.__init__   s   € Ø,ˆÔØ"ˆ�r   c                 óH   —  | j                   |i |¤Ž}| j                  |«      S r   )r)   r(   )r   ÚargsÚkwargsÚop1s       r   Ú__call__zSingleOperandHolder.__call__!   s(   € Øˆd�n‰n˜dÐ- fÑ-ˆØ×"Ñ" 3Ó'Ð'r   N)r"   r#   r$   r*   r/   r%   r   r   r   r      s   „ ò#ó(r   r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)r   c                 ó.   — || _         || _        || _        y r   )r(   r)   Ú	op2_class)r   r(   r)   r2   s       r   r*   zOperandHolder.__init__'   s   € Ø,ˆÔØ"ˆŒØ"ˆ�r   c                 ón   —  | j                   |i |¤Ž} | j                  |i |¤Ž}| j                  ||«      S r   )r)   r2   r(   )r   r,   r-   r.   Úop2s        r   r/   zOperandHolder.__call__,   s?   € Øˆd�n‰n˜dÐ- fÑ-ˆØˆd�n‰n˜dÐ- fÑ-ˆØ×"Ñ" 3¨Ó,Ð,r   c                 óÄ   — t        |t        «      xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )Ú
isinstancer   r(   r)   r2   r   s     r   Ú__eq__zOperandHolder.__eq__1   sV   € ä�uœmÓ,ò .Ø×Ñ 5×#7Ñ#7Ñ7ò.à�N‰N˜eŸo™oÑ-ò.ð �N‰N˜eŸo™oÑ-ð		
r   c                 óZ   — t        | j                  | j                  | j                  f«      S r   )Úhashr(   r)   r2   r    s    r   Ú__hash__zOperandHolder.__hash__9   s"   € Ü�T×(Ñ(¨$¯.©.¸$¿.¹.ÐIÓJÐJr   N)r"   r#   r$   r*   r/   r7   r:   r%   r   r   r   r   &   s   „ ò#ò
-ò

óKr   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)r   c                 ó    — || _         || _        y r   ©r.   r4   ©r   r.   r4   s      r   r*   zAND.__init__>   ó   € ØˆŒØˆ�r   c                 óv   — | j                   j                  ||«      xr | j                  j                  ||«      S r   ©r.   Úhas_permissionr4   ©r   ÚrequestÚviews      r   rB   zAND.has_permissionB   ó4   € à�H‰H×#Ñ# G¨TÓ2ò 3Ø�H‰H×#Ñ# G¨TÓ2ð	
r   c                 óz   — | j                   j                  |||«      xr | j                  j                  |||«      S r   )r.   Úhas_object_permissionr4   ©r   rD   rE   Úobjs       r   rH   zAND.has_object_permissionH   s8   € à�H‰H×*Ñ*¨7°D¸#Ó>ò ?Ø�H‰H×*Ñ*¨7°D¸#Ó>ð	
r   N©r"   r#   r$   r*   rB   rH   r%   r   r   r   r   =   s   „ òò
ó
r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)r   c                 ó    — || _         || _        y r   r=   r>   s      r   r*   zOR.__init__P   r?   r   c                 óv   — | j                   j                  ||«      xs | j                  j                  ||«      S r   rA   rC   s      r   rB   zOR.has_permissionT   rF   r   c                 óò   — | j                   j                  ||«      xr | j                   j                  |||«      xs; | j                  j                  ||«      xr | j                  j                  |||«      S r   )r.   rB   rH   r4   rI   s       r   rH   zOR.has_object_permissionZ   sn   € à�H‰H×#Ñ# G¨TÓ2ò CØ—‘×.Ñ.¨w¸¸cÓBò
ð �H‰H×#Ñ# G¨TÓ2ò CØ—‘×.Ñ.¨w¸¸cÓBð	
r   NrK   r%   r   r   r   r   O   s   „ òò
ó
r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)r   c                 ó   — || _         y r   )r.   )r   r.   s     r   r*   zNOT.__init__e   s	   € Øˆ�r   c                 ó<   — | j                   j                  ||«       S r   )r.   rB   rC   s      r   rB   zNOT.has_permissionh   s   € Ø—8‘8×*Ñ*¨7°DÓ9Ð9Ð9r   c                 ó>   — | j                   j                  |||«       S r   )r.   rH   rI   s       r   rH   zNOT.has_object_permissionk   s   € Ø—8‘8×1Ñ1°'¸4ÀÓEÐEÐEr   NrK   r%   r   r   r   r   d   s   „ òò:óFr   r   c                   ó   — e Zd Zy)ÚBasePermissionMetaclassN)r"   r#   r$   r%   r   r   rU   rU   o   s   „ Ør   rU   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚBasePermissionzH
    A base class from which all permission classes should inherit.
    c                  ó   — y©zL
        Return `True` if permission is granted, `False` otherwise.
        Tr%   rC   s      r   rB   zBasePermission.has_permissionx   ó   € ð r   c                  ó   — yrY   r%   rI   s       r   rH   z$BasePermission.has_object_permission~   rZ   r   N)r"   r#   r$   Ú__doc__rB   rH   r%   r   r   rW   rW   s   s   „ ñòór   rW   )Ú	metaclassc                   ó   — e Zd ZdZd„ Zy)ÚAllowAnyz¹
    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                  ó   — y)NTr%   rC   s      r   rB   zAllowAny.has_permission�   s   € Ør   N©r"   r#   r$   r\   rB   r%   r   r   r_   r_   …   s   „ ñór   r_   c                   ó   — e Zd ZdZd„ Zy)ÚIsAuthenticatedz4
    Allows access only to authenticated users.
    c                 ó\   — t        |j                  xr |j                  j                  «      S r   )ÚboolÚuserÚis_authenticatedrC   s      r   rB   zIsAuthenticated.has_permission–   s    € Ü�G—L‘LÒB W§\¡\×%BÑ%BÓCÐCr   Nra   r%   r   r   rc   rc   ‘   s   „ ñóDr   rc   c                   ó   — e Zd ZdZd„ Zy)ÚIsAdminUserz,
    Allows access only to admin users.
    c                 ó\   — t        |j                  xr |j                  j                  «      S r   )re   rf   Úis_staffrC   s      r   rB   zIsAdminUser.has_permissionŸ   s    € Ü�G—L‘LÒ: W§\¡\×%:Ñ%:Ó;Ð;r   Nra   r%   r   r   ri   ri   š   s   „ ñó<r   ri   c                   ó   — e Zd ZdZd„ Zy)ÚIsAuthenticatedOrReadOnlyzL
    The request is authenticated as a user, or is a read-only request.
    c                 ó„   — t        |j                  t        v xs$ |j                  xr |j                  j                  «      S r   )re   ÚmethodÚSAFE_METHODSrf   rg   rC   s      r   rB   z(IsAuthenticatedOrReadOnly.has_permission¨   s9   € ÜØ�N‰NœlÐ*ò *Ø�L‰Lò *Ø�L‰L×)Ñ)ó
ð 	
r   Nra   r%   r   r   rm   rm   £   s   „ ñó
r   rm   c                   óB   — e Zd ZdZg g g dgdgdgdgdœZdZd„ Zd„ Zd	„ Zy
)ÚDjangoModelPermissionsa}  
    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                 óì   — |j                   j                  |j                   j                  dœ}|| j                  vrt	        j
                  |«      ‚| j                  |   D �cg c]  }||z  ‘Œ	 c}S c c}w )z‚
        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   ro   Ú	model_clsr-   Úperms        r   Úget_required_permissionsz/DjangoModelPermissions.get_required_permissionsË   se   € ð #Ÿ™×2Ñ2Ø#Ÿ/™/×4Ñ4ñ
ˆð
 ˜Ÿ™Ñ'Ü×-Ñ-¨fÓ5Ð5à*.¯.©.¸Ñ*@ÖA $��v“ÒAÐAùÒAó   Á"A1c                 ó4  — t        |d«      s7t        |dd «      €*J dj                  | j                  j                  «      «       ‚t        |d«      r>|j                  «       }|€*J dj                  |j                  j                  «      «       ‚|S |j                  S )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   rE   rŠ   s      r   Ú	_querysetz DjangoModelPermissions._querysetÚ   s™   € Ü�t˜^Ô,Ü�t˜Z¨Ó.Ð:ð	*ð>ç
‰&�—‘×(Ñ(Ó
)ó		*ð ;ô �4˜Ô(Ø×(Ñ(Ó*ˆHØÐ'ð Ø1×8Ñ8¸¿¹×9PÑ9PÓQóÐ'ð ˆOØ�}‰}Ðr   c                 ó   — |j                   r"|j                   j                  s| j                  ryt        |dd«      ry| j	                  |«      }| j                  |j                  |j                  «      }|j                   j                  |«      S )NFÚ_ignore_model_permissionsT)	rf   rg   Úauthenticated_users_onlyrŒ   r�   r†   ro   ÚmodelÚ	has_perms)r   rD   rE   rŠ   Úpermss        r   rB   z%DjangoModelPermissions.has_permissioné   sp   € Ø�|Š|Ø�|‰|×,Ò,°×1NÒ1NØô �4Ð4°eÔ<Øà—>‘> $Ó'ˆØ×-Ñ-¨g¯n©n¸h¿n¹nÓMˆà�|‰|×%Ñ% eÓ,Ð,r   N)	r"   r#   r$   r\   r�   r’   r†   r�   rB   r%   r   r   rr   rr   °   sI   „ ñ	ð ØØØ3Ð4Ø5Ð6Ø7Ð8Ø8Ð9ñ€Ið  $ÐòBòó-r   rr   c                   ó   — e Zd ZdZdZy)Ú$DjangoModelPermissionsOrAnonReadOnlyzj
    Similar to DjangoModelPermissions, except that anonymous users are
    allowed read-only access.
    FN)r"   r#   r$   r\   r’   r%   r   r   r—   r—   ù   s   „ ñð  %Ñr   r—   c                   ó8   — e Zd ZdZg g g dgdgdgdgdœZd„ Zd„ Zy)	ÚDjangoObjectPermissionsa—  
    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.
    rs   rt   ru   rv   c                 óì   — |j                   j                  |j                   j                  dœ}|| j                  vrt	        j
                  |«      ‚| j                  |   D �cg c]  }||z  ‘Œ	 c}S c c}w )Nr|   r   rƒ   s        r   Úget_required_object_permissionsz7DjangoObjectPermissions.get_required_object_permissions  sc   € à"Ÿ™×2Ñ2Ø#Ÿ/™/×4Ñ4ñ
ˆð
 ˜Ÿ™Ñ'Ü×-Ñ-¨fÓ5Ð5à*.¯.©.¸Ñ*@ÖA $��v“ÒAÐAùÒAr‡   c                 ó8  — | j                  |«      }|j                  }|j                  }| j                  |j                  |«      }|j                  ||«      sC|j                  t        v rt        ‚| j                  d|«      }|j                  ||«      st        ‚yy)Nr   FT)r�   r“   rf   r›   ro   r”   rp   r   )	r   rD   rE   rJ   rŠ   r„   rf   r•   Ú
read_permss	            r   rH   z-DjangoObjectPermissions.has_object_permission!  sˆ   € à—>‘> $Ó'ˆØ—N‘Nˆ	Ø�|‰|ˆà×4Ñ4°W·^±^ÀYÓOˆà�~‰~˜e SÔ)ð
 �~‰~¤Ñ-ô �à×=Ñ=¸eÀYÓOˆJØ—>‘> *¨cÔ2Ü�ð àr   N)r"   r#   r$   r\   r�   r›   rH   r%   r   r   r™   r™     s<   „ ñ	ð ØØØ3Ð4Ø5Ð6Ø7Ð8Ø8Ð9ñ€Iò	Bór   r™   N)r\   Údjango.httpr   Úrest_frameworkr   rp   r	   r   r   r   r   r   ÚtyperU   rW   r_   rc   ri   rm   rr   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   