
    'i                         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 Zd Zy)AnyPermissionz
    Permission class that requires any one of the specified permissions
    
    Usage:
    permission_classes = [AnyPermission('view_reports', 'view_analytics')]
    c                     || _         y r   permission_codenamesr   r+   s     r   r   zAnyPermission.__init__4   
    $8!r   c                     j                   j                  syj                   j                  ryj                   j                  syj                   j	                         ryt        fd| j                  D              S )NFTc              3   T   K   | ]  }j                   j                  |       ! y wr   r	   r%   .0permr   s     r   	<genexpr>z/AnyPermission.has_permission.<locals>.<genexpr>E   (      
1 LL//51   %()r	   r"   r
   r#   r$   anyr+   r   s    ` r   r   zAnyPermission.has_permission7   h    ||,,<<$$ ||**<<((* 
11
 
 	
r   Nr&   r   r   r   r(   r(   ,       9
r   r(   c                       e Zd ZdZd Zd Zy)AllPermissionsz
    Permission class that requires all of the specified permissions
    
    Usage:
    permission_classes = [AllPermissions('view_reports', 'edit_reports')]
    c                     || _         y r   r*   r,   s     r   r   zAllPermissions.__init__R   r-   r   c                     j                   j                  syj                   j                  ryj                   j                  syj                   j	                         ryt        fd| j                  D              S )NFTc              3   T   K   | ]  }j                   j                  |       ! y wr   r0   r1   s     r   r4   z0AllPermissions.has_permission.<locals>.<genexpr>c   r5   r6   )r	   r"   r
   r#   r$   allr+   r   s    ` r   r   zAllPermissions.has_permissionU   r8   r   Nr&   r   r   r   r;   r;   J   r9   r   r;   c                       e Zd ZdZddZd Zy)CompanyPermissiona  
    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   company)r   r   rC   s      r   r   zCompanyPermission.__init__q   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%   rC   r   s      r   r   z CompanyPermission.has_permissionu   se    ||,,<<$$ ||** '' ||2243K3KT\\ZZr   )NNr&   r   r   r   rA   rA   h   s    [r   rA   N)
rest_frameworkr   rest_framework.permissionsr   r   r   r   r(   r;   rA   r   r   r   <module>rG      so    & 5)^ )~ M22 M6
K.. 
<
[// 
<[22 [r   