From e5063cd280c3713f955c19983c58c0eabc135081 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Thu, 23 Oct 2025 21:37:30 +0530 Subject: [PATCH] fix: get work item activity external endpoint (#8005) * fix: activity get endpoint fixes * chore: missing pk added --- apps/api/plane/api/views/issue.py | 40 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/apps/api/plane/api/views/issue.py b/apps/api/plane/api/views/issue.py index d3686ceea..c6fd073bf 100644 --- a/apps/api/plane/api/views/issue.py +++ b/apps/api/plane/api/views/issue.py @@ -987,12 +987,12 @@ class LabelDetailAPIEndpoint(LabelListCreateAPIEndpoint): serializer = LabelCreateUpdateSerializer(label, data=request.data, partial=True) if serializer.is_valid(): if ( - str(request.data.get("external_id")) - and (label.external_id != str(request.data.get("external_id"))) + request.data.get("external_id") + and request.data.get("external_source") and Label.objects.filter( project_id=project_id, workspace__slug=slug, - external_source=request.data.get("external_source", label.external_source), + external_source=request.data.get("external_source"), external_id=request.data.get("external_id"), ) .exclude(id=pk) @@ -1695,23 +1695,27 @@ class IssueActivityDetailAPIEndpoint(BaseAPIView): Retrieve details of a specific activity. Excludes comment, vote, reaction, and draft activities. """ - issue_activities = ( - IssueActivity.objects.filter(issue_id=issue_id, workspace__slug=slug, project_id=project_id) - .filter( - ~Q(field__in=["comment", "vote", "reaction", "draft"]), - project__project_projectmember__member=self.request.user, - project__project_projectmember__is_active=True, + issue_activity = ( + ( + IssueActivity.objects.filter(issue_id=issue_id, workspace__slug=slug, project_id=project_id, id=pk) + .filter( + ~Q(field__in=["comment", "vote", "reaction", "draft"]), + project__project_projectmember__member=self.request.user, + project__project_projectmember__is_active=True, + ) + .filter(project__archived_at__isnull=True) + .select_related("actor", "workspace", "issue", "project") ) - .filter(project__archived_at__isnull=True) - .select_related("actor", "workspace", "issue", "project") - ).order_by(request.GET.get("order_by", "created_at")) + .order_by(request.GET.get("order_by", "created_at")) + .first() + ) - return self.paginate( - request=request, - queryset=(issue_activities), - on_results=lambda issue_activity: IssueActivitySerializer( - issue_activity, many=True, fields=self.fields, expand=self.expand - ).data, + if not issue_activity: + return Response({"message": "Activity not found.", "code": "NOT_FOUND"}, status=status.HTTP_404_NOT_FOUND) + + return Response( + IssueActivitySerializer(issue_activity, fields=self.fields, expand=self.expand).data, + status=status.HTTP_200_OK, )