[WEB-3995] chore: track entity state activity for draft issue (#3099)

* chore: track entity state activity for draft issue

* chore: added external api entity tracking
This commit is contained in:
Bavisetti Narayan
2025-05-01 19:21:35 +05:30
committed by GitHub
parent 4f684bc804
commit 56bb47e785
2 changed files with 76 additions and 0 deletions

View File

@@ -64,6 +64,9 @@ from plane.bgtasks.webhook_task import model_activity
from plane.payment.flags.flag_decorator import check_workspace_feature_flag
from plane.payment.flags.flag import FeatureFlag
from plane.ee.utils.workflow import WorkflowStateManager
from plane.ee.bgtasks.entity_issue_state_progress_task import (
entity_issue_state_activity_task,
)
class WorkspaceIssueAPIEndpoint(BaseAPIView):
@@ -421,6 +424,22 @@ class IssueAPIEndpoint(BaseAPIView):
current_instance=current_instance,
epoch=int(timezone.now().timestamp()),
)
cycle_issue = CycleIssue.objects.filter(issue_id=issue.id).first()
if cycle_issue and (
request.data.get("state_id")
or request.data.get("estimate_point")
):
entity_issue_state_activity_task.delay(
issue_cycle_data=[
{
"issue_id": str(issue.id),
"cycle_id": str(cycle_issue.cycle_id),
}
],
user_id=str(request.user.id),
slug=slug,
action="UPDATED",
)
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(
# If the serializer is not valid, respond with 400 bad
@@ -461,6 +480,22 @@ class IssueAPIEndpoint(BaseAPIView):
"created_by", request.user.id
)
issue.save(update_fields=["created_at", "created_by"])
cycle_issue = CycleIssue.objects.filter(issue_id=issue.id).first()
if cycle_issue and (
request.data.get("state_id")
or request.data.get("estimate_point")
):
entity_issue_state_activity_task.delay(
issue_cycle_data=[
{
"issue_id": str(issue.id),
"cycle_id": str(cycle_issue.cycle_id),
}
],
user_id=str(request.user.id),
slug=slug,
action="UPDATED",
)
issue_activity.delay(
type="issue.activity.created",
@@ -540,6 +575,21 @@ class IssueAPIEndpoint(BaseAPIView):
current_instance=current_instance,
epoch=int(timezone.now().timestamp()),
)
cycle_issue = CycleIssue.objects.filter(issue_id=pk).first()
if cycle_issue and (
request.data.get("state_id") or request.data.get("estimate_point")
):
entity_issue_state_activity_task.delay(
issue_cycle_data=[
{
"issue_id": str(issue.id),
"cycle_id": str(cycle_issue.cycle_id),
}
],
user_id=str(request.user.id),
slug=slug,
action="UPDATED",
)
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@@ -561,6 +611,18 @@ class IssueAPIEndpoint(BaseAPIView):
current_instance = json.dumps(
IssueSerializer(issue).data, cls=DjangoJSONEncoder
)
cycle_issue = CycleIssue.objects.filter(issue_id=pk).first()
if cycle_issue:
# added a entry to remove from the entity issue state activity
entity_issue_state_activity_task.delay(
issue_cycle_data=[
{"issue_id": str(issue.id), "cycle_id": str(cycle_issue.cycle_id)}
],
user_id=str(request.user.id),
slug=slug,
action="REMOVED",
)
# EE code end here
issue.delete()
issue_activity.delay(
type="issue.activity.deleted",

View File

@@ -39,6 +39,9 @@ from plane.bgtasks.issue_activities_task import issue_activity
from plane.utils.issue_filters import issue_filters
from plane.utils.host import base_host
from plane.ee.models import IssuePropertyValue, DraftIssuePropertyValue
from plane.ee.bgtasks.entity_issue_state_progress_task import (
entity_issue_state_activity_task,
)
class WorkspaceDraftIssueViewSet(BaseViewSet):
@@ -290,6 +293,17 @@ class WorkspaceDraftIssueViewSet(BaseViewSet):
created_by_id=draft_issue.created_by_id,
updated_by_id=draft_issue.updated_by_id,
)
entity_issue_state_activity_task.delay(
issue_cycle_data=[
{
"issue_id": str(serializer.data.get("id")),
"cycle_id": str(request.data.get("cycle_id")),
}
],
user_id=str(request.user.id),
slug=slug,
action="ADDED",
)
# Capture Issue Activity
issue_activity.delay(
type="cycle.activity.created",