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