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):