Files
crmApi/utils/custom_permissions.py
2024-01-22 13:01:42 +03:30

80 lines
2.3 KiB
Python

from rest_framework import permissions
from utils.get_user_workspace import *
from utils.get_cuser_role import *
from apps.shop.models import Order as OrderModel
from utils.get_cuser_role import get_cuser_role_uuid
from apps.cuser.models import CuserRole as CuserRoleModel
workspace_group = [
'workspace_owner',
]
workspace_admin_up = [
'workspace_owner',
'workspace_admin',
]
workspace_operator_up = [
'workspace_owner',
'workspace_admin',
'workspace_operator',
]
class WorkspaceOwnerPermission(permissions.BasePermission):
required_groups = workspace_group
def has_permission(self, request, view):
cuser_role_uuid = get_cuser_role_uuid(request)
cuser_role = CuserRoleModel.objects.select_related('role_type').get(uuid=cuser_role_uuid)
if cuser_role.role_type.role_name_en in self.required_groups:
return True
else:
return False
class WorkspaceAdminPermission(permissions.BasePermission):
required_groups = workspace_admin_up
def has_permission(self, request, view):
cuser_role_uuid = get_cuser_role_uuid(request)
cuser_role = CuserRoleModel.objects.select_related('role_type').get(uuid=cuser_role_uuid)
if cuser_role.role_type.role_name_en in self.required_groups:
return True
else:
return False
class WorkspaceOperatorPermission(permissions.BasePermission):
required_groups = workspace_operator_up
def has_permission(self, request, view):
cuser_role_uuid = get_cuser_role_uuid(request)
cuser_role = CuserRoleModel.objects.select_related('role_type').get(uuid=cuser_role_uuid)
if cuser_role.role_type.role_name_en in self.required_groups:
return True
else:
return False
class WorkspaceCustomerPermission(permissions.BasePermission):
required_groups = [
'workspace_owner',
'workspace_admin',
'workspace_operator',
'workspace_customer',
]
def has_permission(self, request, view):
cuser_role_uuid = get_cuser_role_uuid(request)
cuser_role = CuserRoleModel.objects.select_related('role_type').get(uuid=cuser_role_uuid)
if cuser_role.role_type.role_name_en in self.required_groups:
return True
else:
return False