a
    Døgü  ã                   @   s   d dl mZ G dd„ dƒZdS )é    )ÚPermissionDeniedc                       sD   e Zd ZdZdZdZdZ‡ fdd„Zdd„ Zdd„ Z	d	d
„ Z
‡  ZS )ÚPermissionCheckedMixinaÓ  
    Mixin for class-based views to enforce permission checks according to
    a permission policy (see wagtail.permission_policies).

    To take advantage of this, subclasses should set the class property:
    * permission_policy (a policy object)
    and either of:
    * permission_required (an action name such as 'add', 'change' or 'delete')
    * any_permission_required (a list of action names - the user must have
      one or more of those permissions)
    Nc                    sN   | j d ur|  | j ¡st‚| jd ur4|  | j¡s4t‚tƒ j|g|¢R i |¤ŽS ©N)Úpermission_requiredÚuser_has_permissionr   Úany_permission_requiredÚuser_has_any_permissionÚsuperÚdispatch)ÚselfÚrequestÚargsÚkwargs©Ú	__class__© úf/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/views/generic/permissions.pyr
      s    

zPermissionCheckedMixin.dispatchc                 C   s   | j  p| j  | jj|¡S r   )Úpermission_policyr   r   Úuser)r   Ú
permissionr   r   r   r       s    ÿz*PermissionCheckedMixin.user_has_permissionc                 C   s   | j  p| j  | jj||¡S r   )r   Ú user_has_permission_for_instancer   r   )r   r   Úinstancer   r   r   r   %   s
    
ÿÿz7PermissionCheckedMixin.user_has_permission_for_instancec                 C   s   | j  p| j  | jj|¡S r   )r   r   r   r   )r   Zpermissionsr   r   r   r   ,   s
    ÿÿz.PermissionCheckedMixin.user_has_any_permission)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r
   r   r   r   Ú__classcell__r   r   r   r   r      s   r   N)Zdjango.core.exceptionsr   r   r   r   r   r   Ú<module>   s   