from backend.permissions import IsOwner, IsStaffOrReadOnly, IsDriOrReadOnly, ReadOnly, IsDriOrNoPost, NoPostIfNotStaff from rest_framework.permissions import IsAdminUser from backend.permissions import DEFAULT_VIEWSET_PERMISSIONS from general.api import get_api_config def get_viewset_permissions(viewset): api_config = get_api_config() for obj in api_config: if obj['viewset'] == viewset: custom_permission = obj["viewset_permission"] if custom_permission == "IsOwner": permission = (IsOwner,) elif custom_permission == "IsStaffOrReadOnly": permission = (IsStaffOrReadOnly,) elif custom_permission == "IsDriOrReadOnly": permission = (IsDriOrReadOnly,) elif custom_permission == "IsDriOrNoPost": permission = (IsDriOrNoPost,) elif custom_permission == "NoPostIfNotStaff": permission = (NoPostIfNotStaff,) elif custom_permission == "IsStaff": permission = (IsAdminUser,) elif custom_permission == 'default': permission = tuple() else: raise Exception( "Permission not supported ! Dev what did you do ?") if obj["read_only"]: permission += (ReadOnly,) return DEFAULT_VIEWSET_PERMISSIONS + permission raise Exception("Viewset not found in API configuraiton, cannot process !")