forked from github/plane
chore: add workspace details and project details in page responses (#615)
* chore: add workspace details and project details in page responses * fix: typo in workspace queryset
This commit is contained in:
parent
f79fdbf782
commit
f9ee898d88
@ -10,6 +10,7 @@ from .workspace import (
|
|||||||
WorkSpaceMemberSerializer,
|
WorkSpaceMemberSerializer,
|
||||||
TeamSerializer,
|
TeamSerializer,
|
||||||
WorkSpaceMemberInviteSerializer,
|
WorkSpaceMemberInviteSerializer,
|
||||||
|
WorkspaceLiteSerializer,
|
||||||
)
|
)
|
||||||
from .project import (
|
from .project import (
|
||||||
ProjectSerializer,
|
ProjectSerializer,
|
||||||
|
@ -482,6 +482,7 @@ class IssueSerializer(BaseSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class IssueLiteSerializer(BaseSerializer):
|
class IssueLiteSerializer(BaseSerializer):
|
||||||
|
workspace_detail = WorkspaceLiteSerializer(read_only=True, source="workspace")
|
||||||
project_detail = ProjectLiteSerializer(read_only=True, source="project")
|
project_detail = ProjectLiteSerializer(read_only=True, source="project")
|
||||||
state_detail = StateLiteSerializer(read_only=True, source="state")
|
state_detail = StateLiteSerializer(read_only=True, source="state")
|
||||||
label_details = LabelLiteSerializer(read_only=True, source="labels", many=True)
|
label_details = LabelLiteSerializer(read_only=True, source="labels", many=True)
|
||||||
|
@ -11,6 +11,8 @@ from plane.db.models import Page, PageBlock, PageFavorite, PageLabel, Label
|
|||||||
|
|
||||||
class PageBlockSerializer(BaseSerializer):
|
class PageBlockSerializer(BaseSerializer):
|
||||||
issue_detail = IssueFlatSerializer(source="issue", read_only=True)
|
issue_detail = IssueFlatSerializer(source="issue", read_only=True)
|
||||||
|
project_detail = ProjectLiteSerializer(source="project", read_only=True)
|
||||||
|
workspace_detail = WorkspaceLiteSerializer(source="workspace", read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PageBlock
|
model = PageBlock
|
||||||
|
@ -13,6 +13,8 @@ from django.conf import settings
|
|||||||
# Module imports
|
# Module imports
|
||||||
from .base import BaseAPIView
|
from .base import BaseAPIView
|
||||||
from plane.api.permissions import ProjectEntityPermission
|
from plane.api.permissions import ProjectEntityPermission
|
||||||
|
from plane.db.models import Workspace, Project
|
||||||
|
from plane.api.serializers import ProjectLiteSerializer, WorkspaceLiteSerializer
|
||||||
|
|
||||||
|
|
||||||
class GPTIntegrationEndpoint(BaseAPIView):
|
class GPTIntegrationEndpoint(BaseAPIView):
|
||||||
@ -71,12 +73,26 @@ class GPTIntegrationEndpoint(BaseAPIView):
|
|||||||
max_tokens=1024,
|
max_tokens=1024,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
workspace = Workspace.objects.get(slug=slug)
|
||||||
|
project = Project.objects.get(pk=project_id)
|
||||||
|
|
||||||
text = response.choices[0].text.strip()
|
text = response.choices[0].text.strip()
|
||||||
text_html = text.replace("\n", "<br/>")
|
text_html = text.replace("\n", "<br/>")
|
||||||
return Response(
|
return Response(
|
||||||
{"response": text, "response_html": text_html, "count": count},
|
{
|
||||||
|
"response": text,
|
||||||
|
"response_html": text_html,
|
||||||
|
"count": count,
|
||||||
|
"project_detail": ProjectLiteSerializer(project).data,
|
||||||
|
"workspace_detail": WorkspaceLiteSerializer(workspace).data,
|
||||||
|
},
|
||||||
status=status.HTTP_200_OK,
|
status=status.HTTP_200_OK,
|
||||||
)
|
)
|
||||||
|
except (Workspace.DoesNotExist, Project.DoesNotExist) as e:
|
||||||
|
return Response(
|
||||||
|
{"error": "Workspace or Project Does not exist"},
|
||||||
|
status=status.HTTP_400_BAD_REQUEST,
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
capture_exception(e)
|
capture_exception(e)
|
||||||
return Response(
|
return Response(
|
||||||
|
@ -64,7 +64,10 @@ class PageViewSet(BaseViewSet):
|
|||||||
.order_by("name", "-is_favorite")
|
.order_by("name", "-is_favorite")
|
||||||
.prefetch_related(
|
.prefetch_related(
|
||||||
Prefetch(
|
Prefetch(
|
||||||
"blocks", queryset=PageBlock.objects.select_related("page", "issue")
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.distinct()
|
.distinct()
|
||||||
@ -223,6 +226,7 @@ class CreateIssueFromPageBlockEndpoint(BaseAPIView):
|
|||||||
verb="created",
|
verb="created",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
page_block.issue = issue
|
page_block.issue = issue
|
||||||
page_block.save()
|
page_block.save()
|
||||||
|
|
||||||
@ -268,6 +272,14 @@ class RecentPagesEndpoint(BaseAPIView):
|
|||||||
.select_related("workspace")
|
.select_related("workspace")
|
||||||
.select_related("owned_by")
|
.select_related("owned_by")
|
||||||
.prefetch_related("labels")
|
.prefetch_related("labels")
|
||||||
|
.prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
.order_by("-is_favorite", "-updated_by")
|
.order_by("-is_favorite", "-updated_by")
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -284,6 +296,14 @@ class RecentPagesEndpoint(BaseAPIView):
|
|||||||
.select_related("workspace")
|
.select_related("workspace")
|
||||||
.select_related("owned_by")
|
.select_related("owned_by")
|
||||||
.prefetch_related("labels")
|
.prefetch_related("labels")
|
||||||
|
.prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
.order_by("-is_favorite", "-updated_by")
|
.order_by("-is_favorite", "-updated_by")
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -304,6 +324,14 @@ class RecentPagesEndpoint(BaseAPIView):
|
|||||||
.select_related("workspace")
|
.select_related("workspace")
|
||||||
.select_related("owned_by")
|
.select_related("owned_by")
|
||||||
.prefetch_related("labels")
|
.prefetch_related("labels")
|
||||||
|
.prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
.order_by("-is_favorite", "-updated_by")
|
.order_by("-is_favorite", "-updated_by")
|
||||||
)
|
)
|
||||||
todays_pages_serializer = PageSerializer(todays_pages, many=True)
|
todays_pages_serializer = PageSerializer(todays_pages, many=True)
|
||||||
@ -351,6 +379,14 @@ class FavoritePagesEndpoint(BaseAPIView):
|
|||||||
.select_related("workspace")
|
.select_related("workspace")
|
||||||
.select_related("owned_by")
|
.select_related("owned_by")
|
||||||
.prefetch_related("labels")
|
.prefetch_related("labels")
|
||||||
|
.prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
.order_by("name", "-is_favorite")
|
.order_by("name", "-is_favorite")
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -388,6 +424,14 @@ class MyPagesEndpoint(BaseAPIView):
|
|||||||
.annotate(is_favorite=Exists(subquery))
|
.annotate(is_favorite=Exists(subquery))
|
||||||
.filter(Q(owned_by=self.request.user) | Q(access=0))
|
.filter(Q(owned_by=self.request.user) | Q(access=0))
|
||||||
.filter(project__project_projectmember__member=request.user)
|
.filter(project__project_projectmember__member=request.user)
|
||||||
|
.prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
.order_by("-is_favorite", "name")
|
.order_by("-is_favorite", "name")
|
||||||
)
|
)
|
||||||
serializer = PageSerializer(pages, many=True)
|
serializer = PageSerializer(pages, many=True)
|
||||||
@ -425,6 +469,14 @@ class CreatedbyOtherPagesEndpoint(BaseAPIView):
|
|||||||
.select_related("owned_by")
|
.select_related("owned_by")
|
||||||
.prefetch_related("labels")
|
.prefetch_related("labels")
|
||||||
.annotate(is_favorite=Exists(subquery))
|
.annotate(is_favorite=Exists(subquery))
|
||||||
|
.prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"blocks",
|
||||||
|
queryset=PageBlock.objects.select_related(
|
||||||
|
"page", "issue", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
.order_by("-is_favorite", "name")
|
.order_by("-is_favorite", "name")
|
||||||
)
|
)
|
||||||
serializer = PageSerializer(pages, many=True)
|
serializer = PageSerializer(pages, many=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user