From 104a6f41fcb3427a5f2514530ea10e729ed97da1 Mon Sep 17 00:00:00 2001 From: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com> Date: Fri, 6 Sep 2024 19:40:45 +0530 Subject: [PATCH] chore: workspace user favorite pages (#1056) --- apiserver/plane/ee/urls/app/page.py | 6 ++++ apiserver/plane/ee/views/__init__.py | 1 + apiserver/plane/ee/views/app/page/__init__.py | 1 + .../plane/ee/views/app/page/workspace.py | 28 +++++++++++++++++++ 4 files changed, 36 insertions(+) diff --git a/apiserver/plane/ee/urls/app/page.py b/apiserver/plane/ee/urls/app/page.py index e2c62fd0ae..4803c1899c 100644 --- a/apiserver/plane/ee/urls/app/page.py +++ b/apiserver/plane/ee/urls/app/page.py @@ -6,6 +6,7 @@ from plane.ee.views import ( WorkspacePageViewSet, WorkspacePagesDescriptionViewSet, WorkspacePageVersionEndpoint, + WorkspacePageFavoriteEndpoint, ) @@ -90,4 +91,9 @@ urlpatterns = [ WorkspacePageVersionEndpoint.as_view(), name="workspace-page-version", ), + path( + "workspaces//favorite-pages//", + WorkspacePageFavoriteEndpoint.as_view(), + name="page-favorites", + ), ] diff --git a/apiserver/plane/ee/views/__init__.py b/apiserver/plane/ee/views/__init__.py index 08ada24e4f..003bdb113d 100644 --- a/apiserver/plane/ee/views/__init__.py +++ b/apiserver/plane/ee/views/__init__.py @@ -16,6 +16,7 @@ from plane.ee.views.app.page import ( WorkspacePageViewSet, WorkspacePagesDescriptionViewSet, WorkspacePageVersionEndpoint, + WorkspacePageFavoriteEndpoint, ) from plane.ee.views.app.views import ( IssueViewEEViewSet, diff --git a/apiserver/plane/ee/views/app/page/__init__.py b/apiserver/plane/ee/views/app/page/__init__.py index 537163d8d6..59d496ae9b 100644 --- a/apiserver/plane/ee/views/app/page/__init__.py +++ b/apiserver/plane/ee/views/app/page/__init__.py @@ -3,4 +3,5 @@ from .workspace import ( WorkspacePageViewSet, WorkspacePagesDescriptionViewSet, WorkspacePageVersionEndpoint, + WorkspacePageFavoriteEndpoint, ) diff --git a/apiserver/plane/ee/views/app/page/workspace.py b/apiserver/plane/ee/views/app/page/workspace.py index a942fe2259..198a084241 100644 --- a/apiserver/plane/ee/views/app/page/workspace.py +++ b/apiserver/plane/ee/views/app/page/workspace.py @@ -455,3 +455,31 @@ class WorkspacePageVersionEndpoint(BaseAPIView): # Serialize the page versions serializer = WorkspacePageVersionSerializer(page_versions, many=True) return Response(serializer.data, status=status.HTTP_200_OK) + + +class WorkspacePageFavoriteEndpoint(BaseAPIView): + + model = UserFavorite + + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) + def post(self, request, slug, pk): + workspace = Workspace.objects.get(slug=slug) + _ = UserFavorite.objects.create( + entity_identifier=pk, + entity_type="page", + user=request.user, + workspace_id=workspace.id, + ) + return Response(status=status.HTTP_204_NO_CONTENT) + + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) + def delete(self, request, slug, pk): + page_favorite = UserFavorite.objects.get( + project__isnull=True, + user=request.user, + workspace__slug=slug, + entity_identifier=pk, + entity_type="page", + ) + page_favorite.delete(soft=False) + return Response(status=status.HTTP_204_NO_CONTENT)