Files
website-v2/asciidoctor_sandbox/tasks.py
2025-09-26 08:29:20 -07:00

41 lines
1.1 KiB
Python

from datetime import timedelta
import structlog
from celery import shared_task
from django.utils import timezone
from .constants import ASCIIDOCTOR_SANDBOX_DOCUMENT_RETENTION_DAYS
from .models import SandboxDocument
logger = structlog.get_logger(__name__)
@shared_task
def cleanup_old_sandbox_documents():
"""
Delete sandbox documents last updated before the configured retention period.
"""
cutoff_date = timezone.now() - timedelta(
days=ASCIIDOCTOR_SANDBOX_DOCUMENT_RETENTION_DAYS
)
old_documents = SandboxDocument.objects.filter(updated_at__lt=cutoff_date)
count = old_documents.count()
if count == 0:
logger.info("No old sandbox documents to clean up")
return
logger.info(
f"Deleting {count} sandbox documents older than "
f"{ASCIIDOCTOR_SANDBOX_DOCUMENT_RETENTION_DAYS} days"
)
deleted_count = 0
for document in old_documents:
logger.debug(f"Deleting sandbox document {document.id=}")
document.delete()
deleted_count += 1
logger.info(f"Successfully deleted {deleted_count} old sandbox documents")