[WEB-2092] chore: changed the hard delete days (#5255)
* chore: changed the hard delete days * chore: hard delete key change * chore: restrict deletion of project * chore: draft issue delete filter
This commit is contained in:
parent
0b01d3e88d
commit
3c684ecab7
5 changed files with 32 additions and 22 deletions
|
|
@ -50,3 +50,6 @@ GUNICORN_WORKERS=2
|
||||||
ADMIN_BASE_URL=
|
ADMIN_BASE_URL=
|
||||||
SPACE_BASE_URL=
|
SPACE_BASE_URL=
|
||||||
APP_BASE_URL=
|
APP_BASE_URL=
|
||||||
|
|
||||||
|
# Hard delete files after days
|
||||||
|
HARD_DELETE_AFTER_DAYS=
|
||||||
|
|
@ -66,6 +66,7 @@ class IssueArchiveViewSet(BaseViewSet):
|
||||||
.annotate(count=Func(F("id"), function="Count"))
|
.annotate(count=Func(F("id"), function="Count"))
|
||||||
.values("count")
|
.values("count")
|
||||||
)
|
)
|
||||||
|
.filter(deleted_at__isnull=True)
|
||||||
.filter(archived_at__isnull=False)
|
.filter(archived_at__isnull=False)
|
||||||
.filter(project_id=self.kwargs.get("project_id"))
|
.filter(project_id=self.kwargs.get("project_id"))
|
||||||
.filter(workspace__slug=self.kwargs.get("slug"))
|
.filter(workspace__slug=self.kwargs.get("slug"))
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ class IssueDraftViewSet(BaseViewSet):
|
||||||
Issue.objects.filter(project_id=self.kwargs.get("project_id"))
|
Issue.objects.filter(project_id=self.kwargs.get("project_id"))
|
||||||
.filter(workspace__slug=self.kwargs.get("slug"))
|
.filter(workspace__slug=self.kwargs.get("slug"))
|
||||||
.filter(is_draft=True)
|
.filter(is_draft=True)
|
||||||
|
.filter(deleted_at__isnull=True)
|
||||||
.select_related("workspace", "project", "state", "parent")
|
.select_related("workspace", "project", "state", "parent")
|
||||||
.prefetch_related("assignees", "labels", "issue_module__module")
|
.prefetch_related("assignees", "labels", "issue_module__module")
|
||||||
.annotate(cycle_id=F("issue_cycle__cycle_id"))
|
.annotate(cycle_id=F("issue_cycle__cycle_id"))
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
from django.conf import settings
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
|
||||||
# Third party imports
|
# Third party imports
|
||||||
|
|
@ -15,9 +16,9 @@ def soft_delete_related_objects(
|
||||||
instance = model_class.all_objects.get(pk=instance_pk)
|
instance = model_class.all_objects.get(pk=instance_pk)
|
||||||
related_fields = instance._meta.get_fields()
|
related_fields = instance._meta.get_fields()
|
||||||
for field in related_fields:
|
for field in related_fields:
|
||||||
if field.one_to_many or field.one_to_one or field.many_to_many:
|
if field.one_to_many or field.one_to_one:
|
||||||
try:
|
try:
|
||||||
if field.one_to_many or field.many_to_many:
|
if field.one_to_many:
|
||||||
related_objects = getattr(instance, field.name).all()
|
related_objects = getattr(instance, field.name).all()
|
||||||
elif field.one_to_one:
|
elif field.one_to_one:
|
||||||
related_object = getattr(instance, field.name)
|
related_object = getattr(instance, field.name)
|
||||||
|
|
@ -58,88 +59,89 @@ def hard_delete():
|
||||||
ModuleIssue,
|
ModuleIssue,
|
||||||
CycleIssue,
|
CycleIssue,
|
||||||
Estimate,
|
Estimate,
|
||||||
EstimatePoint
|
EstimatePoint,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
days = settings.HARD_DELETE_AFTER_DAYS
|
||||||
# check delete workspace
|
# check delete workspace
|
||||||
_ = Workspace.all_objects.filter(
|
_ = Workspace.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete project
|
# check delete project
|
||||||
_ = Project.all_objects.filter(
|
_ = Project.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete cycle
|
# check delete cycle
|
||||||
_ = Cycle.all_objects.filter(
|
_ = Cycle.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete module
|
# check delete module
|
||||||
_ = Module.all_objects.filter(
|
_ = Module.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete issue
|
# check delete issue
|
||||||
_ = Issue.all_objects.filter(
|
_ = Issue.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete page
|
# check delete page
|
||||||
_ = Page.all_objects.filter(
|
_ = Page.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete view
|
# check delete view
|
||||||
_ = IssueView.all_objects.filter(
|
_ = IssueView.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete label
|
# check delete label
|
||||||
_ = Label.all_objects.filter(
|
_ = Label.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# check delete state
|
# check delete state
|
||||||
_ = State.all_objects.filter(
|
_ = State.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = IssueActivity.all_objects.filter(
|
_ = IssueActivity.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = IssueComment.all_objects.filter(
|
_ = IssueComment.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = IssueLink.all_objects.filter(
|
_ = IssueLink.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = IssueReaction.all_objects.filter(
|
_ = IssueReaction.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = UserFavorite.all_objects.filter(
|
_ = UserFavorite.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = ModuleIssue.all_objects.filter(
|
_ = ModuleIssue.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = CycleIssue.all_objects.filter(
|
_ = CycleIssue.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = Estimate.all_objects.filter(
|
_ = Estimate.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
_ = EstimatePoint.all_objects.filter(
|
_ = EstimatePoint.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now() - timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
# at last, check for every thing which ever is left and delete it
|
# at last, check for every thing which ever is left and delete it
|
||||||
|
|
@ -152,7 +154,8 @@ def hard_delete():
|
||||||
if hasattr(model, "deleted_at"):
|
if hasattr(model, "deleted_at"):
|
||||||
# Get all instances where 'deleted_at' is greater than 30 days ago
|
# Get all instances where 'deleted_at' is greater than 30 days ago
|
||||||
_ = model.all_objects.filter(
|
_ = model.all_objects.filter(
|
||||||
deleted_at__lt=timezone.now() - timezone.timedelta(days=30)
|
deleted_at__lt=timezone.now()
|
||||||
|
- timezone.timedelta(days=days)
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -355,3 +355,5 @@ CSRF_FAILURE_VIEW = "plane.authentication.views.common.csrf_failure"
|
||||||
ADMIN_BASE_URL = os.environ.get("ADMIN_BASE_URL", None)
|
ADMIN_BASE_URL = os.environ.get("ADMIN_BASE_URL", None)
|
||||||
SPACE_BASE_URL = os.environ.get("SPACE_BASE_URL", None)
|
SPACE_BASE_URL = os.environ.get("SPACE_BASE_URL", None)
|
||||||
APP_BASE_URL = os.environ.get("APP_BASE_URL")
|
APP_BASE_URL = os.environ.get("APP_BASE_URL")
|
||||||
|
|
||||||
|
HARD_DELETE_AFTER_DAYS = int(os.environ.get("HARD_DELETE_AFTER_DAYS", 60))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue