From 8746959705864a5d34cdcc3ae9a9bf236ee6cd9f Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Mon, 5 Aug 2024 15:27:49 +0530 Subject: [PATCH 1/3] chore: favorite delete changes --- apiserver/plane/api/views/cycle.py | 8 ++++++++ apiserver/plane/api/views/module.py | 9 +++++++++ apiserver/plane/api/views/project.py | 8 ++++++++ apiserver/plane/app/views/cycle/base.py | 7 +++++++ apiserver/plane/app/views/module/base.py | 14 ++++++++++++++ apiserver/plane/app/views/page/base.py | 15 +++++++++++++++ apiserver/plane/app/views/view/base.py | 24 ++++++++++++++++++++++++ 7 files changed, 85 insertions(+) diff --git a/apiserver/plane/api/views/cycle.py b/apiserver/plane/api/views/cycle.py index 2d044eafa49..eebe046f138 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,13 @@ 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.get( + 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/api/views/module.py b/apiserver/plane/api/views/module.py index 63985fd4d1c..9ac9c72d500 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,14 @@ 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.get( + 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/api/views/project.py b/apiserver/plane/api/views/project.py index 7fb53597f3e..d832eb294d7 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,13 @@ 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.get( + user=request.user, + 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..df4a64555b7 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.get( + 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..a7c83fa25d7 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.get( + 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..7231eabf3c1 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -32,6 +32,7 @@ UserFavorite, ProjectMember, ProjectPage, + DeployBoard, ) # Module imports @@ -359,6 +360,20 @@ def destroy(self, request, slug, project_id, pk): ).update(parent=None) page.delete() + # Delete the deploy board + DeployBoard.objects.get( + entity_name="page", + entity_identifier=pk, + workspace__slug=slug, + ).delete() + # Delete the user favorite page + UserFavorite.objects.get( + project=project_id, + user=request.user, + 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..61e88a04a04 100644 --- a/apiserver/plane/app/views/view/base.py +++ b/apiserver/plane/app/views/view/base.py @@ -34,6 +34,7 @@ Workspace, WorkspaceMember, ProjectMember, + DeployBoard, ) from plane.utils.grouper import ( issue_group_values, @@ -141,6 +142,14 @@ def destroy(self, request, slug, pk): or workspace_view.owned_by == request.user ): workspace_view.delete() + # Delete the user favorite view + UserFavorite.objects.get( + user=request.user, + 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 +446,21 @@ 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( + user=request.user, + project_id=project_id, + workspace__slug=slug, + entity_identifier=pk, + entity_type="view", + ).delete() + # Delete the view from the deploy board + DeployBoard.objects.get( + entity_name="view", + entity_identifier=pk, + project_id=project_id, + workspace__slug=slug, + ).delete() else: return Response( {"error": "Only admin or owner can delete the view"}, From 76387b55a23bae72ad6c0aa9e470bf21b6af2331 Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Mon, 5 Aug 2024 17:15:32 +0530 Subject: [PATCH 2/3] chore: removed deploy board deletion --- apiserver/plane/app/views/page/base.py | 7 ------- apiserver/plane/app/views/view/base.py | 8 -------- 2 files changed, 15 deletions(-) diff --git a/apiserver/plane/app/views/page/base.py b/apiserver/plane/app/views/page/base.py index 7231eabf3c1..7859a481261 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -32,7 +32,6 @@ UserFavorite, ProjectMember, ProjectPage, - DeployBoard, ) # Module imports @@ -360,12 +359,6 @@ def destroy(self, request, slug, project_id, pk): ).update(parent=None) page.delete() - # Delete the deploy board - DeployBoard.objects.get( - entity_name="page", - entity_identifier=pk, - workspace__slug=slug, - ).delete() # Delete the user favorite page UserFavorite.objects.get( project=project_id, diff --git a/apiserver/plane/app/views/view/base.py b/apiserver/plane/app/views/view/base.py index 61e88a04a04..98b1a8b10d5 100644 --- a/apiserver/plane/app/views/view/base.py +++ b/apiserver/plane/app/views/view/base.py @@ -34,7 +34,6 @@ Workspace, WorkspaceMember, ProjectMember, - DeployBoard, ) from plane.utils.grouper import ( issue_group_values, @@ -454,13 +453,6 @@ def destroy(self, request, slug, project_id, pk): entity_identifier=pk, entity_type="view", ).delete() - # Delete the view from the deploy board - DeployBoard.objects.get( - entity_name="view", - entity_identifier=pk, - project_id=project_id, - workspace__slug=slug, - ).delete() else: return Response( {"error": "Only admin or owner can delete the view"}, From 4edd5431becab7525aca3ca8ece7e26384ad90be Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Mon, 5 Aug 2024 17:25:17 +0530 Subject: [PATCH 3/3] chore: favorite entity deletion --- apiserver/plane/api/views/cycle.py | 3 +-- apiserver/plane/api/views/module.py | 3 +-- apiserver/plane/api/views/project.py | 3 +-- apiserver/plane/app/views/cycle/base.py | 2 +- apiserver/plane/app/views/module/base.py | 2 +- apiserver/plane/app/views/page/base.py | 3 +-- apiserver/plane/app/views/view/base.py | 4 +--- 7 files changed, 7 insertions(+), 13 deletions(-) diff --git a/apiserver/plane/api/views/cycle.py b/apiserver/plane/api/views/cycle.py index eebe046f138..18b030eec07 100644 --- a/apiserver/plane/api/views/cycle.py +++ b/apiserver/plane/api/views/cycle.py @@ -410,8 +410,7 @@ def delete(self, request, slug, project_id, pk): cycle_id=self.kwargs.get("pk"), ).delete() # Delete the user favorite cycle - UserFavorite.objects.get( - user=request.user, + UserFavorite.objects.filter( entity_type="cycle", entity_identifier=pk, project_id=project_id, diff --git a/apiserver/plane/api/views/module.py b/apiserver/plane/api/views/module.py index 9ac9c72d500..96f7cb25dc1 100644 --- a/apiserver/plane/api/views/module.py +++ b/apiserver/plane/api/views/module.py @@ -308,8 +308,7 @@ def delete(self, request, slug, project_id, pk): project_id=project_id, ).delete() # Delete the user favorite module - UserFavorite.objects.get( - user=request.user, + UserFavorite.objects.filter( entity_type="module", entity_identifier=pk, project_id=project_id, diff --git a/apiserver/plane/api/views/project.py b/apiserver/plane/api/views/project.py index d832eb294d7..2f8dddd6d05 100644 --- a/apiserver/plane/api/views/project.py +++ b/apiserver/plane/api/views/project.py @@ -358,8 +358,7 @@ 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.get( - user=request.user, + UserFavorite.objects.filter( entity_type="project", entity_identifier=pk, project_id=pk, diff --git a/apiserver/plane/app/views/cycle/base.py b/apiserver/plane/app/views/cycle/base.py index df4a64555b7..6587b777521 100644 --- a/apiserver/plane/app/views/cycle/base.py +++ b/apiserver/plane/app/views/cycle/base.py @@ -1087,7 +1087,7 @@ def destroy(self, request, slug, project_id, pk): cycle_id=self.kwargs.get("pk"), ).delete() # Delete the user favorite cycle - UserFavorite.objects.get( + UserFavorite.objects.filter( user=request.user, entity_type="cycle", entity_identifier=pk, diff --git a/apiserver/plane/app/views/module/base.py b/apiserver/plane/app/views/module/base.py index a7c83fa25d7..1cd67d18c18 100644 --- a/apiserver/plane/app/views/module/base.py +++ b/apiserver/plane/app/views/module/base.py @@ -785,7 +785,7 @@ def destroy(self, request, slug, project_id, pk): project_id=project_id, ).delete() # Delete the user favorite module - UserFavorite.objects.get( + UserFavorite.objects.filter( user=request.user, entity_type="module", entity_identifier=pk, diff --git a/apiserver/plane/app/views/page/base.py b/apiserver/plane/app/views/page/base.py index 7859a481261..44c2c21408f 100644 --- a/apiserver/plane/app/views/page/base.py +++ b/apiserver/plane/app/views/page/base.py @@ -360,9 +360,8 @@ def destroy(self, request, slug, project_id, pk): page.delete() # Delete the user favorite page - UserFavorite.objects.get( + UserFavorite.objects.filter( project=project_id, - user=request.user, workspace__slug=slug, entity_identifier=pk, entity_type="page", diff --git a/apiserver/plane/app/views/view/base.py b/apiserver/plane/app/views/view/base.py index 98b1a8b10d5..297fe3f6952 100644 --- a/apiserver/plane/app/views/view/base.py +++ b/apiserver/plane/app/views/view/base.py @@ -142,8 +142,7 @@ def destroy(self, request, slug, pk): ): workspace_view.delete() # Delete the user favorite view - UserFavorite.objects.get( - user=request.user, + UserFavorite.objects.filter( workspace__slug=slug, entity_identifier=pk, project__isnull=True, @@ -447,7 +446,6 @@ def destroy(self, request, slug, project_id, pk): project_view.delete() # Delete the user favorite view UserFavorite.objects.filter( - user=request.user, project_id=project_id, workspace__slug=slug, entity_identifier=pk,