From 5573d85d80fa07891dc4ad3fe6612a23f050cae7 Mon Sep 17 00:00:00 2001 From: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:24:18 +0530 Subject: [PATCH] chore: only admin's can delete a project (#5790) --- apiserver/plane/app/views/project/base.py | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/apiserver/plane/app/views/project/base.py b/apiserver/plane/app/views/project/base.py index f5ddb2245..3ca034467 100644 --- a/apiserver/plane/app/views/project/base.py +++ b/apiserver/plane/app/views/project/base.py @@ -508,6 +508,44 @@ class ProjectViewSet(BaseViewSet): status=status.HTTP_410_GONE, ) + def destroy(self, request, slug, pk): + if ( + WorkspaceMember.objects.filter( + member=request.user, + workspace__slug=slug, + is_active=True, + role=20, + ).exists() + or ProjectMember.objects.filter( + member=request.user, + workspace__slug=slug, + project_id=pk, + role=20, + is_active=True, + ).exists() + ): + project = Project.objects.get(pk=pk) + project.delete() + + # Delete the project members + DeployBoard.objects.filter( + project_id=pk, + workspace__slug=slug, + ).delete() + + # Delete the user favorite + UserFavorite.objects.filter( + project_id=pk, + workspace__slug=slug, + ).delete() + + return Response(status=status.HTTP_204_NO_CONTENT) + else: + return Response( + {"error": "You don't have the required permissions."}, + status=status.HTTP_403_FORBIDDEN, + ) + class ProjectArchiveUnarchiveEndpoint(BaseAPIView):