Delete audit logs on empty_trash

This commit is contained in:
shamoon 2024-11-28 23:24:52 -08:00
parent 51c339d1b7
commit 81a4c33a6d

View File

@ -10,6 +10,7 @@ import tqdm
from celery import Task from celery import Task
from celery import shared_task from celery import shared_task
from django.conf import settings from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.db import models from django.db import models
from django.db import transaction from django.db import transaction
from django.db.models.signals import post_save from django.db.models.signals import post_save
@ -332,9 +333,17 @@ def empty_trash(doc_ids=None):
) )
try: try:
deleted_document_ids = documents.values_list("id", flat=True)
# Temporarily connect the cleanup handler # Temporarily connect the cleanup handler
models.signals.post_delete.connect(cleanup_document_deletion, sender=Document) models.signals.post_delete.connect(cleanup_document_deletion, sender=Document)
documents.delete() # this is effectively a hard delete documents.delete() # this is effectively a hard delete
if settings.AUDIT_LOG_ENABLED:
# Delete the audit log entries for documents that dont exist anymore
LogEntry.objects.filter(
content_type=ContentType.objects.get_for_model(Document),
object_id__in=deleted_document_ids,
).delete()
except Exception as e: # pragma: no cover except Exception as e: # pragma: no cover
logger.exception(f"Error while emptying trash: {e}") logger.exception(f"Error while emptying trash: {e}")
finally: finally: