From f9aad5c84561e2be9f7357be05df9841208efb3e Mon Sep 17 00:00:00 2001 From: Sangeetha Date: Thu, 13 Mar 2025 16:40:22 +0530 Subject: [PATCH] fix: deleted at not updating for pages (#2720) * fix: updated deleted_at of pages for project deletion * chore: change function name * chore: code refacture * chore: remove unused imports * chore: optimize filter logic --- apiserver/plane/app/views/project/base.py | 1 + apiserver/plane/bgtasks/deletion_task.py | 11 +++++++++++ apiserver/plane/db/models/project.py | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/apiserver/plane/app/views/project/base.py b/apiserver/plane/app/views/project/base.py index 124a3f2c95..680a613d01 100644 --- a/apiserver/plane/app/views/project/base.py +++ b/apiserver/plane/app/views/project/base.py @@ -580,6 +580,7 @@ class ProjectViewSet(BaseViewSet): ).exists() ): project = Project.objects.get(pk=pk) + project.delete() webhook_activity.delay( event="project", diff --git a/apiserver/plane/bgtasks/deletion_task.py b/apiserver/plane/bgtasks/deletion_task.py index ebf67141bd..927a2538a9 100644 --- a/apiserver/plane/bgtasks/deletion_task.py +++ b/apiserver/plane/bgtasks/deletion_task.py @@ -110,6 +110,17 @@ def soft_delete_related_objects(app_label, model_name, instance_pk, using=None): instance.save() +@shared_task +def soft_delete_pages_on_project_deletion(project_id): + from plane.db.models import Page + + pages = Page.objects.filter(project_pages__project_id=project_id) + + for page in pages: + page.deleted_at = timezone.now() + page.save() + + # @shared_task def restore_related_objects(app_label, model_name, instance_pk, using=None): pass diff --git a/apiserver/plane/db/models/project.py b/apiserver/plane/db/models/project.py index c97c550ee2..4fcd2be116 100644 --- a/apiserver/plane/db/models/project.py +++ b/apiserver/plane/db/models/project.py @@ -13,6 +13,7 @@ from plane.db.mixins import AuditModel # Module imports from .base import BaseModel +from plane.bgtasks.deletion_task import soft_delete_pages_on_project_deletion ROLE_CHOICES = ((20, "Admin"), (15, "Member"), (5, "Guest")) @@ -155,6 +156,12 @@ class Project(BaseModel): self.identifier = self.identifier.strip().upper() return super().save(*args, **kwargs) + def delete(self, using=None, *args, **kwargs): + delete_queryset = super().delete(using=using, *args, **kwargs) + soft_delete_pages_on_project_deletion.delay(self.id) + + return delete_queryset + class ProjectBaseModel(BaseModel): project = models.ForeignKey(