
    Owi                         d dl mZ d dlmZ  G d de      Z G d de      Z G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                        Z	y)    )permissions)BasePermissionc                       e Zd ZdZd Zy)SuperAdminOnlyzOnly super admin can accessc                 .    |j                   j                  S N)useris_superuserselfrequestviews      E/var/www/html/dp2/backend_v2.1/server/apps/permissions/permissions.pyhas_permissionzSuperAdminOnly.has_permission   s    ||(((    N__name__
__module____qualname____doc__r    r   r   r   r      s
    %)r   r   c                       e Zd ZdZd Zy)AllowAnyzAllow any user to accessc                      y)NTr   r   s      r   r   zAllowAny.has_permission   s    r   Nr   r   r   r   r   r      s
    "r   r   c                       e Zd ZdZd Zd Zy)GenericPermissionz
    Generic permission class that can be used for any permission
    
    Usage:
    permission_classes = [GenericPermission('view_reports')]
    c                     || _         y r   )permission_codename)r   r   s     r   __init__zGenericPermission.__init__   s
    #6 r   c                    |j                   j                  sy|j                   j                  ry|j                   j                  sy|j                   j	                         ry|j                   j                  | j                        S NFT)r	   is_authenticatedr
   active_companyis_company_adminhas_company_permissionr   r   s      r   r   z GenericPermission.has_permission   sb    ||,,<<$$ ||**<<((*||2243K3KLLr   Nr   r   r   r   r   r   r   r   r   r   r      s    7Mr   r   c                   "    e Zd ZdZdddZd Zy)AnyPermissionz
    Permission class that requires any one of the specified permissions
    
    Usage:
    permission_classes = [AnyPermission('view_reports', 'view_analytics')]
    Ncompanyc                N    |D cg c]  }t        ||       c}| _        y c c}w Nr)   CompanyPermissionr   r   r*   permission_codenamesperms       r   r   zAnyPermission.__init__4   0     -
, dG4,
 
   "c                 D    t        fd| j                  D              S )Nc              3   B   K   | ]  }|j                          y wr   r   .0
permissionr   r   s     r   	<genexpr>z/AnyPermission.has_permission.<locals>.<genexpr>;   &      
.
 %%gt4.   )anyr   r   s    ``r   r   zAnyPermission.has_permission:   #     
"..
 
 	
r   r&   r   r   r   r(   r(   ,        7; 

r   r(   c                   "    e Zd ZdZdddZd Zy)AllPermissionsz
    Permission class that requires all of the specified permissions
    
    Usage:
    permission_classes = [AllPermissions('view_reports', 'edit_reports')]
    Nr)   c                N    |D cg c]  }t        ||       c}| _        y c c}w r,   r-   r/   s       r   r   zAllPermissions.__init__H   r2   r3   c                 D    t        fd| j                  D              S )Nc              3   B   K   | ]  }|j                          y wr   r6   r7   s     r   r:   z0AllPermissions.has_permission.<locals>.<genexpr>O   r;   r<   )allr   r   s    ``r   r   zAllPermissions.has_permissionN   r>   r   r&   r   r   r   rA   rA   @   r?   r   rA   c                       e Zd ZdZddZd Zy)r.   a  
    Permission class that requires company membership and optional permission
    
    Usage:
    permission_classes = [CompanyPermission('view_reports')]  # Requires company + permission
    permission_classes = [CompanyPermission()]  # Just requires company membership
    Nc                      || _         || _        y r   )r   r*   )r   r   r*   s      r   r   zCompanyPermission.__init__]   s    #6 r   c                    |j                   j                  sy|j                   j                  ry|j                   j                  sy| j                  sy|j                   j                  | j                  | j                        S r!   )r	   r"   r
   r#   r   r%   r*   r   s      r   r   z CompanyPermission.has_permissiona   se    ||,,<<$$ ||** '' ||2243K3KT\\ZZr   )NNr&   r   r   r   r.   r.   T   s    [r   r.   N)
rest_frameworkr   rest_framework.permissionsr   r   r   r   r(   rA   r.   r   r   r   <module>rK      so    & 5)^ )~ M22 M6
K.. 
(
[// 
([22 [r   