diff --git a/apiserver/plane/api/views/cycle.py b/apiserver/plane/api/views/cycle.py index 2d044eafa49..18b030eec07 100644 --- a/apiserver/plane/api/views/cycle.py +++ b/apiserver/plane/api/views/cycle.py @@ -35,6 +35,7 @@ IssueAttachment, IssueLink, ProjectMember, + UserFavorite, ) from plane.utils.analytics_plot import burndown_plot @@ -408,6 +409,12 @@ def delete(self, request, slug, project_id, pk): CycleIssue.objects.filter( cycle_id=self.kwargs.get("pk"), ).delete() + # Delete the user favorite cycle + UserFavorite.objects.filter( + entity_type="cycle", + entity_identifier=pk, + project_id=project_id, + ).delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/api/views/module.py b/apiserver/plane/api/views/module.py index 63985fd4d1c..96f7cb25dc1 100644 --- a/apiserver/plane/api/views/module.py +++ b/apiserver/plane/api/views/module.py @@ -28,6 +28,7 @@ ModuleLink, Project, ProjectMember, + UserFavorite, ) from .base import BaseAPIView @@ -304,6 +305,13 @@ def delete(self, request, slug, project_id, pk): # Delete the module issues ModuleIssue.objects.filter( module=pk, + project_id=project_id, + ).delete() + # Delete the user favorite module + UserFavorite.objects.filter( + entity_type="module", + entity_identifier=pk, + project_id=project_id, ).delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/api/views/project.py b/apiserver/plane/api/views/project.py index 7fb53597f3e..2f8dddd6d05 100644 --- a/apiserver/plane/api/views/project.py +++ b/apiserver/plane/api/views/project.py @@ -26,6 +26,7 @@ ProjectMember, State, Workspace, + UserFavorite, ) from plane.bgtasks.webhook_task import model_activity from .base import BaseAPIView @@ -356,6 +357,12 @@ def patch(self, request, slug, pk): def delete(self, request, slug, pk): project = Project.objects.get(pk=pk, workspace__slug=slug) + # Delete the user favorite cycle + UserFavorite.objects.filter( + entity_type="project", + entity_identifier=pk, + project_id=pk, + ).delete() project.delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/cycle/base.py b/apiserver/plane/app/views/cycle/base.py index db2a73d4c95..6587b777521 100644 --- a/apiserver/plane/app/views/cycle/base.py +++ b/apiserver/plane/app/views/cycle/base.py @@ -1086,6 +1086,13 @@ def destroy(self, request, slug, project_id, pk): CycleIssue.objects.filter( cycle_id=self.kwargs.get("pk"), ).delete() + # Delete the user favorite cycle + UserFavorite.objects.filter( + user=request.user, + entity_type="cycle", + entity_identifier=pk, + project_id=project_id, + ).delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/module/base.py b/apiserver/plane/app/views/module/base.py index c6861fe4bf7..1cd67d18c18 100644 --- a/apiserver/plane/app/views/module/base.py +++ b/apiserver/plane/app/views/module/base.py @@ -444,6 +444,12 @@ def retrieve(self, request, slug, project_id, pk): ) ) + if not queryset.exists(): + return Response( + {"error": "Module not found"}, + status=status.HTTP_404_NOT_FOUND, + ) + estimate_type = Project.objects.filter( workspace__slug=slug, pk=project_id, @@ -776,6 +782,14 @@ def destroy(self, request, slug, project_id, pk): # Delete the module issues ModuleIssue.objects.filter( module=pk, + project_id=project_id, + ).delete() + # Delete the user favorite module + UserFavorite.objects.filter( + user=request.user, + entity_type="module", + entity_identifier=pk, + project_id=project_id, ).delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/page/base.py b/apiserver/plane/app/views/page/base.py index 88c331727e6..44c2c21408f 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -359,6 +359,13 @@ def destroy(self, request, slug, project_id, pk): ).update(parent=None) page.delete() + # Delete the user favorite page + UserFavorite.objects.filter( + project=project_id, + workspace__slug=slug, + entity_identifier=pk, + entity_type="page", + ).delete() return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apiserver/plane/app/views/view/base.py b/apiserver/plane/app/views/view/base.py index 9881088317d..297fe3f6952 100644 --- a/apiserver/plane/app/views/view/base.py +++ b/apiserver/plane/app/views/view/base.py @@ -141,6 +141,13 @@ def destroy(self, request, slug, pk): or workspace_view.owned_by == request.user ): workspace_view.delete() + # Delete the user favorite view + UserFavorite.objects.filter( + workspace__slug=slug, + entity_identifier=pk, + project__isnull=True, + entity_type="view", + ).delete() else: return Response( {"error": "Only admin or owner can delete the view"}, @@ -437,6 +444,13 @@ def destroy(self, request, slug, project_id, pk): or project_view.owned_by_id == request.user.id ): project_view.delete() + # Delete the user favorite view + UserFavorite.objects.filter( + project_id=project_id, + workspace__slug=slug, + entity_identifier=pk, + entity_type="view", + ).delete() else: return Response( {"error": "Only admin or owner can delete the view"},