§
    ¥”jt%  ã                   óÆ  — 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d$S )%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dS )ÚOperationHolderMixinc                 ó.   — t          t          | |¦  «        S ©N©ÚOperandHolderÚAND©ÚselfÚothers     úi/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/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dS )r   c                 ó"   — || _         || _        d S r   )Úoperator_classÚ	op1_class)r   r(   r)   s      r   Ú__init__zSingleOperandHolder.__init__   s   € Ø,ˆÔØ"ˆŒˆˆr   c                 óF   —  | j         |i |¤Ž}|                      |¦  «        S r   )r)   r(   )r   ÚargsÚkwargsÚop1s       r   Ú__call__zSingleOperandHolder.__call__!   s,   € ØˆdŒn˜dÐ- fÐ-Ð-ˆØ×"Ò" 3Ñ'Ô'Ð'r   N)r"   r#   r$   r*   r/   r%   r   r   r   r      s2   € € € € € ð#ð #ð #ð(ð (ð (ð (ð (r   r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )r   c                 ó0   — || _         || _        || _        d S r   )r(   r)   Ú	op2_class)r   r(   r)   r2   s       r   r*   zOperandHolder.__init__'   s   € Ø,ˆÔØ"ˆŒØ"ˆŒˆˆr   c                 ób   —  | j         |i |¤Ž} | j        |i |¤Ž}|                      ||¦  «        S r   )r)   r2   r(   )r   r,   r-   r.   Úop2s        r   r/   zOperandHolder.__call__,   sD   € ØˆdŒn˜dÐ- fÐ-Ð-ˆØˆdŒn˜dÐ- fÐ-Ð-ˆØ×"Ò" 3¨Ñ,Ô,Ð,r   c                 óŒ   — t          |t          ¦  «        o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r   )Ú
isinstancer   r(   r)   r2   r   s     r   Ú__eq__zOperandHolder.__eq__1   sK   € å�u�mÑ,Ô,ð .ØÔ 5Ô#7Ò7ð.àŒN˜eœoÒ-ð.ð ŒN˜eœoÒ-ð		
r   c                 óD   — t          | j        | j        | j        f¦  «        S r   )Úhashr(   r)   r2   r    s    r   Ú__hash__zOperandHolder.__hash__9   s   € Ý�TÔ(¨$¬.¸$¼.ÐIÑJÔJÐJr   N)r"   r#   r$   r*   r/   r7   r:   r%   r   r   r   r   &   sU   € € € € € ð#ð #ð #ð
-ð -ð -ð

ð 
ð 
ðKð Kð Kð Kð Kr   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )r   c                 ó"   — || _         || _        d S r   ©r.   r4   ©r   r.   r4   s      r   r*   zAND.__init__>   ó   € ØˆŒØˆŒˆˆr   c                 ón   — | j                              ||¦  «        o| j                             ||¦  «        S r   ©r.   Úhas_permissionr4   ©r   ÚrequestÚviews      r   rB   zAND.has_permissionB   ó6   € àŒH×#Ò# G¨TÑ2Ô2ð 3ØŒH×#Ò# G¨TÑ2Ô2ð	
r   c                 ór   — | j                              |||¦  «        o| j                             |||¦  «        S r   )r.   Úhas_object_permissionr4   ©r   rD   rE   Úobjs       r   rH   zAND.has_object_permissionH   s:   € àŒH×*Ò*¨7°D¸#Ñ>Ô>ð ?ØŒH×*Ò*¨7°D¸#Ñ>Ô>ð	
r   N©r"   r#   r$   r*   rB   rH   r%   r   r   r   r   =   sA   € € € € € ðð ð ð
ð 
ð 
ð
ð 
ð 
ð 
ð 
r   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )r   c                 ó"   — || _         || _        d S r   r=   r>   s      r   r*   zOR.__init__P   r?   r   c                 ón   — | j                              ||¦  «        p| j                             ||¦  «        S r   rA   rC   s      r   rB   zOR.has_permissionT   rF   r   c                 óÞ   — | j                              ||¦  «        o| j                              |||¦  «        p6| j                             ||¦  «        o| j                             |||¦  «        S r   )r.   rB   rH   r4   rI   s       r   rH   zOR.has_object_permissionZ   sr   € àŒH×#Ò# G¨TÑ2Ô2ð CØ”×.Ò.¨w¸¸cÑBÔBð
ð ŒH×#Ò# G¨TÑ2Ô2ð CØ”×.Ò.¨w¸¸cÑBÔBð	
r   NrK   r%   r   r   r   r   O   sA   € € € € € ðð ð ð
ð 
ð 
ð
ð 
ð 
ð 
ð 
r   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )r   c                 ó   — || _         d S r   )r.   )r   r.   s     r   r*   zNOT.__init__e   s   € ØˆŒˆˆr   c                 ó:   — | j                              ||¦  «         S r   )r.   rB   rC   s      r   rB   zNOT.has_permissionh   s   € Ø”8×*Ò*¨7°DÑ9Ô9Ð9Ð9r   c                 ó<   — | j                              |||¦  «         S r   )r.   rH   rI   s       r   rH   zNOT.has_object_permissionk   s   € Ø”8×1Ò1°'¸4ÀÑEÔEÐEÐEr   NrK   r%   r   r   r   r   d   sF   € € € € € ðð ð ð:ð :ð :ðFð Fð Fð Fð Fr   r   c                   ó   — e Zd ZdS )ÚBasePermissionMetaclassN)r"   r#   r$   r%   r   r   rU   rU   o   s   € € € € € Ø€Dr   rU   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚBasePermissionzH
    A base class from which all permission classes should inherit.
    c                 ó   — dS ©zL
        Return `True` if permission is granted, `False` otherwise.
        Tr%   rC   s      r   rB   zBasePermission.has_permissionx   ó	   € ð ˆtr   c                 ó   — dS 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dS )Ú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                 ó   — dS )NTr%   rC   s      r   rB   zAllowAny.has_permission�   s   € Øˆtr   N©r"   r#   r$   r\   rB   r%   r   r   r_   r_   …   s-   € € € € € ðð ðð ð ð ð r   r_   c                   ó   — e Zd ZdZd„ ZdS )ÚIsAuthenticatedz4
    Allows access only to authenticated users.
    c                 óB   — t          |j        o|j        j        ¦  «        S r   )ÚboolÚuserÚis_authenticatedrC   s      r   rB   zIsAuthenticated.has_permission–   s   € Ý�G”LÐB W¤\Ô%BÑCÔCÐCr   Nra   r%   r   r   rc   rc   ‘   s2   € € € € € ðð ðDð Dð Dð Dð Dr   rc   c                   ó   — e Zd ZdZd„ ZdS )ÚIsAdminUserz,
    Allows access only to admin users.
    c                 óB   — t          |j        o|j        j        ¦  «        S r   )re   rf   Úis_staffrC   s      r   rB   zIsAdminUser.has_permissionŸ   s   € Ý�G”LÐ: W¤\Ô%:Ñ;Ô;Ð;r   Nra   r%   r   r   ri   ri   š   s-   € € € € € ðð ð<ð <ð <ð <ð <r   ri   c                   ó   — e Zd ZdZd„ ZdS )ÚIsAuthenticatedOrReadOnlyzL
    The request is authenticated as a user, or is a read-only request.
    c                 ó^   — t          |j        t          v p|j        o|j        j        ¦  «        S r   )re   ÚmethodÚSAFE_METHODSrf   rg   rC   s      r   rB   z(IsAuthenticatedOrReadOnly.has_permission¨   s5   € ÝØŒN�lÐ*ð *ØŒLð *ØŒLÔ)ñ
ô 
ð 	
r   Nra   r%   r   r   rm   rm   £   s-   € € € € € ðð ð
ð 
ð 
ð 
ð 
r   rm   c                   óD   — 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d
S )Ú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        |¦  «        ‚ˆfd„| j        |         D ¦   «         S )z‚
        Given a model and an HTTP method, return the list of permission
        codes that the user is required to have.
        ©Ú	app_labelÚ
model_namec                 ó   •— g | ]}|‰z  ‘ŒS r%   r%   ©Ú.0Úpermr-   s     €r   ú
<listcomp>zCDjangoModelPermissions.get_required_permissions.<locals>.<listcomp>Ø   ó   ø€ ÐAÐAÐA $��v‘ÐAÐAÐAr   ©Ú_metar}   r~   Ú	perms_mapr   ÚMethodNotAllowed©r   ro   Ú	model_clsr-   s      @r   Úget_required_permissionsz/DjangoModelPermissions.get_required_permissionsË   sb   ø€ ð #œÔ2Ø#œ/Ô4ð
ð 
ˆð
 ˜œÐ'Ð'ÝÔ-¨fÑ5Ô5Ð5àAÐAÐAÐA¨$¬.¸Ô*@ÐAÑAÔAÐAr   c                 ó  — t          |d¦  «        s8t          |dd ¦  «        €'J d                     | j        j        ¦  «        ¦   «         ‚t          |d¦  «        r/|                     ¦   «         }|€J |j        j        › d�¦   «         ‚|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ØÐ'Ð'Ø”>Ô*ÐIÐIÐIñ (Ô'Ð'ð ˆOØŒ}Ðr   c                 óþ   — |j         r|j         j        s	| j        rdS t          |dd¦  «        rdS |                      |¦  «        }|                      |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é   s…   € ØŒ|ð 	ØŒ|Ô,ð	Ø15Ô1Nð	à�5õ �4Ð4°eÑ<Ô<ð 	Ø�4à—>’> $Ñ'Ô'ˆØ×-Ò-¨g¬n¸h¼nÑMÔMˆàŒ|×%Ò% eÑ,Ô,Ð,r   N)	r"   r#   r$   r\   r‡   r–   r‹   r“   rB   r%   r   r   rr   rr   °   s…   € € € € € ð	ð 	ð ØØØ3Ð4Ø5Ð6Ø7Ð8Ø8Ð9ðð €Ið  $ÐðBð Bð Bðð ð ð-ð -ð -ð -ð -r   rr   c                   ó   — e Zd ZdZdZdS )Ú$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                   ó:   — e Zd ZdZg g g dgdgdgdgdœZd„ Zd„ ZdS )	Ú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        |¦  «        ‚ˆfd„| j        |         D ¦   «         S )Nr|   c                 ó   •— g | ]}|‰z  ‘ŒS r%   r%   r€   s     €r   rƒ   zKDjangoObjectPermissions.get_required_object_permissions.<locals>.<listcomp>  r„   r   r…   r‰   s      @r   Úget_required_object_permissionsz7DjangoObjectPermissions.get_required_object_permissions  s`   ø€ à"œÔ2Ø#œ/Ô4ð
ð 
ˆð
 ˜œÐ'Ð'ÝÔ-¨fÑ5Ô5Ð5àAÐAÐAÐA¨$¬.¸Ô*@ÐAÑAÔAÐAr   c                 óB  — |                       |¦  «        }|j        }|j        }|                      |j        |¦  «        }|                     ||¦  «        sJ|j        t          v rt          ‚|                      d|¦  «        }|                     ||¦  «        st          ‚dS dS )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ˆ	ØŒ|ˆà×4Ò4°W´^ÀYÑOÔOˆà�~Š~˜e SÑ)Ô)ð 	ð
 Œ~¥Ð-Ð-õ �à×=Ò=¸eÀYÑOÔOˆJØ—>’> *¨cÑ2Ô2ð Ý�ð �5àˆtr   N)r"   r#   r$   r\   r‡   r    rH   r%   r   r   r�   r�     sn   € € € € € ð	ð 	ð ØØØ3Ð4Ø5Ð6Ø7Ð8Ø8Ð9ðð €Ið	Bð 	Bð 	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ð Kð Kð KÐ(ñ Kô Kð Kð.
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð$
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð*Fð Fð Fð Fð Fñ Fô Fð Fð	ð 	ð 	ð 	ð 	Ð2°Dñ 	ô 	ð 	ðð ð ð ð Ð6ð ñ ô ð ð$	ð 	ð 	ð 	ð 	ˆ~ñ 	ô 	ð 	ðDð Dð Dð Dð D�nñ Dô Dð Dð<ð <ð <ð <ð <�.ñ <ô <ð <ð

ð 

ð 

ð 

ð 

 ñ 

ô 

ð 

ðF-ð F-ð F-ð F-ð F-˜^ñ F-ô F-ð F-ðR%ð %ð %ð %ð %Ð+Añ %ô %ð %ð9ð 9ð 9ð 9ð 9Ð4ñ 9ô 9ð 9ð 9ð 9r   