From 2b764163bfe9e7d4fd007d36f2b8e3940c494762 Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Wed, 1 Nov 2023 17:12:44 +0530 Subject: [PATCH 1/2] chore: added validation for archived issue --- apiserver/plane/api/views/issue.py | 2 +- .../plane/bgtasks/issue_activites_task.py | 57 ++++++++++--------- .../plane/bgtasks/issue_automation_task.py | 2 +- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/apiserver/plane/api/views/issue.py b/apiserver/plane/api/views/issue.py index 99f2de2c28e..f9eb5ef0997 100644 --- a/apiserver/plane/api/views/issue.py +++ b/apiserver/plane/api/views/issue.py @@ -1100,7 +1100,7 @@ def unarchive(self, request, slug, project_id, pk=None): actor_id=str(request.user.id), issue_id=str(issue.id), project_id=str(project_id), - current_instance=None, + current_instance=json.dumps(IssueSerializer(issue).data, cls=DjangoJSONEncoder), epoch=int(timezone.now().timestamp()), ) diff --git a/apiserver/plane/bgtasks/issue_activites_task.py b/apiserver/plane/bgtasks/issue_activites_task.py index 03e9d09e915..7517bb121f2 100644 --- a/apiserver/plane/bgtasks/issue_activites_task.py +++ b/apiserver/plane/bgtasks/issue_activites_task.py @@ -418,36 +418,37 @@ def track_archive_at( issue_activities, epoch, ): - if requested_data.get("archived_at") is None: - issue_activities.append( - IssueActivity( - issue_id=issue_id, - project_id=project_id, - workspace_id=workspace_id, - comment=f"has restored the issue", - verb="updated", - actor_id=actor_id, - field="archived_at", - old_value="archive", - new_value="restore", - epoch=epoch, + if current_instance.get("archived_at") != requested_data.get("archived_at"): + if requested_data.get("archived_at") is None: + issue_activities.append( + IssueActivity( + issue_id=issue_id, + project_id=project_id, + workspace_id=workspace_id, + comment=f"has restored the issue", + verb="updated", + actor_id=actor_id, + field="archived_at", + old_value="archive", + new_value="restore", + epoch=epoch, + ) ) - ) - else: - issue_activities.append( - IssueActivity( - issue_id=issue_id, - project_id=project_id, - workspace_id=workspace_id, - comment=f"Plane has archived the issue", - verb="updated", - actor_id=actor_id, - field="archived_at", - old_value=None, - new_value="archive", - epoch=epoch, + else: + issue_activities.append( + IssueActivity( + issue_id=issue_id, + project_id=project_id, + workspace_id=workspace_id, + comment=f"Plane has archived the issue", + verb="updated", + actor_id=actor_id, + field="archived_at", + old_value=None, + new_value="archive", + epoch=epoch, + ) ) - ) def track_closed_to( diff --git a/apiserver/plane/bgtasks/issue_automation_task.py b/apiserver/plane/bgtasks/issue_automation_task.py index 68c64403ac6..1f40f48e510 100644 --- a/apiserver/plane/bgtasks/issue_automation_task.py +++ b/apiserver/plane/bgtasks/issue_automation_task.py @@ -78,7 +78,7 @@ def archive_old_issues(): actor_id=str(project.created_by_id), issue_id=issue.id, project_id=project_id, - current_instance=None, + current_instance=json.dumps({"archived_at": None}), subscriber=False, epoch=int(timezone.now().timestamp()) ) From 2a3872077c57c840158d962ba865a630cbf96c5c Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Wed, 1 Nov 2023 17:18:11 +0530 Subject: [PATCH 2/2] fix: optimised code --- apiserver/plane/api/views/issue.py | 28 ++++++++----------- .../plane/bgtasks/issue_activites_task.py | 4 +-- .../plane/bgtasks/issue_automation_task.py | 2 +- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/apiserver/plane/api/views/issue.py b/apiserver/plane/api/views/issue.py index f9eb5ef0997..ae785578fd1 100644 --- a/apiserver/plane/api/views/issue.py +++ b/apiserver/plane/api/views/issue.py @@ -235,10 +235,7 @@ def list(self, request, slug, project_id): status=status.HTTP_200_OK, ) - return Response( - issues, status=status.HTTP_200_OK - ) - + return Response(issues, status=status.HTTP_200_OK) def create(self, request, slug, project_id): project = Project.objects.get(pk=project_id) @@ -443,9 +440,7 @@ def get(self, request, slug): status=status.HTTP_200_OK, ) - return Response( - issues, status=status.HTTP_200_OK - ) + return Response(issues, status=status.HTTP_200_OK) class WorkSpaceIssuesEndpoint(BaseAPIView): @@ -623,13 +618,12 @@ def post(self, request, slug, project_id): serializer = IssuePropertySerializer(issue_property) return Response(serializer.data, status=status.HTTP_201_CREATED) - def get(self, request, slug, project_id): - issue_property, _ = IssueProperty.objects.get_or_create( - user=request.user, project_id=project_id - ) - serializer = IssuePropertySerializer(issue_property) - return Response(serializer.data, status=status.HTTP_200_OK) + issue_property, _ = IssueProperty.objects.get_or_create( + user=request.user, project_id=project_id + ) + serializer = IssuePropertySerializer(issue_property) + return Response(serializer.data, status=status.HTTP_200_OK) class LabelViewSet(BaseViewSet): @@ -1100,7 +1094,9 @@ def unarchive(self, request, slug, project_id, pk=None): actor_id=str(request.user.id), issue_id=str(issue.id), project_id=str(project_id), - current_instance=json.dumps(IssueSerializer(issue).data, cls=DjangoJSONEncoder), + current_instance=json.dumps( + IssueSerializer(issue).data, cls=DjangoJSONEncoder + ), epoch=int(timezone.now().timestamp()), ) @@ -2160,9 +2156,7 @@ def list(self, request, slug, project_id): status=status.HTTP_200_OK, ) - return Response( - issues, status=status.HTTP_200_OK - ) + return Response(issues, status=status.HTTP_200_OK) def create(self, request, slug, project_id): project = Project.objects.get(pk=project_id) diff --git a/apiserver/plane/bgtasks/issue_activites_task.py b/apiserver/plane/bgtasks/issue_activites_task.py index 7517bb121f2..b1277cb3de7 100644 --- a/apiserver/plane/bgtasks/issue_activites_task.py +++ b/apiserver/plane/bgtasks/issue_activites_task.py @@ -425,7 +425,7 @@ def track_archive_at( issue_id=issue_id, project_id=project_id, workspace_id=workspace_id, - comment=f"has restored the issue", + comment="has restored the issue", verb="updated", actor_id=actor_id, field="archived_at", @@ -440,7 +440,7 @@ def track_archive_at( issue_id=issue_id, project_id=project_id, workspace_id=workspace_id, - comment=f"Plane has archived the issue", + comment="Plane has archived the issue", verb="updated", actor_id=actor_id, field="archived_at", diff --git a/apiserver/plane/bgtasks/issue_automation_task.py b/apiserver/plane/bgtasks/issue_automation_task.py index 1f40f48e510..b2f7476a5cf 100644 --- a/apiserver/plane/bgtasks/issue_automation_task.py +++ b/apiserver/plane/bgtasks/issue_automation_task.py @@ -71,7 +71,7 @@ def archive_old_issues(): Issue.objects.bulk_update( issues_to_update, ["archived_at"], batch_size=100 ) - [ + _ = [ issue_activity.delay( type="issue.activity.updated", requested_data=json.dumps({"archived_at": str(archive_at)}),