From 07574b42220f5a9b6695a7edfb81000d9ded522d Mon Sep 17 00:00:00 2001 From: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com> Date: Mon, 5 Aug 2024 17:40:49 +0530 Subject: [PATCH] [WEB-2092] chore: favorite delete changes (#5302) * chore: favorite delete changes * chore: removed deploy board deletion * chore: favorite entity deletion --- apiserver/plane/api/views/cycle.py | 7 +++++++ apiserver/plane/api/views/module.py | 8 ++++++++ apiserver/plane/api/views/project.py | 7 +++++++ apiserver/plane/app/views/cycle/base.py | 7 +++++++ apiserver/plane/app/views/module/base.py | 14 ++++++++++++++ apiserver/plane/app/views/page/base.py | 7 +++++++ apiserver/plane/app/views/view/base.py | 14 ++++++++++++++ 7 files changed, 64 insertions(+) diff --git a/apiserver/plane/api/views/cycle.py b/apiserver/plane/api/views/cycle.py index 2d044eafa..18b030eec 100644 --- a/apiserver/plane/api/views/cycle.py +++ b/apiserver/plane/api/views/cycle.py @@ -35,6 +35,7 @@ from plane.db.models import ( IssueAttachment, IssueLink, ProjectMember, + UserFavorite, ) from plane.utils.analytics_plot import burndown_plot @@ -408,6 +409,12 @@ class CycleAPIEndpoint(BaseAPIView): 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 63985fd4d..96f7cb25d 100644 --- a/apiserver/plane/api/views/module.py +++ b/apiserver/plane/api/views/module.py @@ -28,6 +28,7 @@ from plane.db.models import ( ModuleLink, Project, ProjectMember, + UserFavorite, ) from .base import BaseAPIView @@ -304,6 +305,13 @@ class ModuleAPIEndpoint(BaseAPIView): # 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 7fb53597f..2f8dddd6d 100644 --- a/apiserver/plane/api/views/project.py +++ b/apiserver/plane/api/views/project.py @@ -26,6 +26,7 @@ from plane.db.models import ( ProjectMember, State, Workspace, + UserFavorite, ) from plane.bgtasks.webhook_task import model_activity from .base import BaseAPIView @@ -356,6 +357,12 @@ class ProjectAPIEndpoint(BaseAPIView): 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 db2a73d4c..6587b7775 100644 --- a/apiserver/plane/app/views/cycle/base.py +++ b/apiserver/plane/app/views/cycle/base.py @@ -1086,6 +1086,13 @@ class CycleViewSet(BaseViewSet): 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 c6861fe4b..1cd67d18c 100644 --- a/apiserver/plane/app/views/module/base.py +++ b/apiserver/plane/app/views/module/base.py @@ -444,6 +444,12 @@ class ModuleViewSet(BaseViewSet): ) ) + 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 @@ class ModuleViewSet(BaseViewSet): # 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 88c331727..44c2c2140 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -359,6 +359,13 @@ class PageViewSet(BaseViewSet): ).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 988108831..297fe3f69 100644 --- a/apiserver/plane/app/views/view/base.py +++ b/apiserver/plane/app/views/view/base.py @@ -141,6 +141,13 @@ class WorkspaceViewViewSet(BaseViewSet): 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 @@ class IssueViewViewSet(BaseViewSet): 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"},