# Third Party imports from rest_framework.permissions import BasePermission, SAFE_METHODS # Module imports from plane.db.models import WorkspaceMember, ProjectMember # TODO: Move the below logic to python match - python v3.10 class WorkSpaceBasePermission(BasePermission): def has_permission(self, request, view): # allow anyone to create a workspace if request.user.is_anonymous: return False if request.method == "POST": return True ## Safe Methods if request.method in SAFE_METHODS: return True # allow only admins and owners to update the workspace settings if request.method in ["PUT", "PATCH"]: return WorkspaceMember.objects.filter( member=request.user, workspace=view.workspace, role__in=[15, 20] ).exists() # allow only owner to delete the workspace if request.method == "DELETE": return WorkspaceMember.objects.filter( member=request.user, workspace=view.workspace, role=20 ).exists() class WorkSpaceAdminPermission(BasePermission): def has_permission(self, request, view): if request.user.is_anonymous: return False return WorkspaceMember.objects.filter( member=request.user, workspace=view.workspace, role__in=[15, 20] ).exists()