From 9e9a6f4cce5fd568faf42de5e4e31c3e6314c3db Mon Sep 17 00:00:00 2001 From: pablohashescobar <118773738+pablohashescobar@users.noreply.github.com> Date: Thu, 9 Feb 2023 10:41:43 +0530 Subject: [PATCH] feat: record issue completed at date when the issues are moved to fompleted group (#262) --- apiserver/plane/db/models/issue.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/apiserver/plane/db/models/issue.py b/apiserver/plane/db/models/issue.py index 3331b08329e..a870eb93fd5 100644 --- a/apiserver/plane/db/models/issue.py +++ b/apiserver/plane/db/models/issue.py @@ -4,6 +4,7 @@ from django.conf import settings from django.db.models.signals import post_save from django.dispatch import receiver +from django.utils import timezone # Module imports from . import ProjectBaseModel @@ -58,6 +59,7 @@ class Issue(ProjectBaseModel): "db.Label", blank=True, related_name="labels", through="IssueLabel" ) sort_order = models.FloatField(default=65535) + completed_at = models.DateTimeField(null=True) class Meta: verbose_name = "Issue" @@ -86,7 +88,22 @@ def save(self, *args, **kwargs): ) except ImportError: pass + else: + try: + from plane.db.models import State + + # Get the completed states of the project + completed_states = State.objects.filter( + group="completed", project=self.project + ).values_list("pk", flat=True) + # Check if the current issue state and completed state id are same + if self.state.id in completed_states: + self.completed_at = timezone.now() + else: + self.completed_at = None + except ImportError: + pass # Strip the html tags using html parser self.description_stripped = ( None