Fix empty trash task, including test

This commit is contained in:
shamoon 2024-05-17 21:40:46 -07:00
parent 6841c744c9
commit dd1f076275
2 changed files with 40 additions and 4 deletions

View File

@ -300,13 +300,15 @@ def update_document_archive_file(document_id):
@shared_task
def empty_trash(doc_ids=None):
cutoff = timezone.localtime(timezone.now()) - timedelta(
days=settings.EMPTY_TRASH_DELAY,
)
documents = (
Document.deleted_objects.filter(id__in=doc_ids)
if doc_ids is not None
else Document.deleted_objects.filter(deleted_at__gt=cutoff)
else Document.deleted_objects.filter(
deleted_at__lt=timezone.localtime(timezone.now())
- timedelta(
days=settings.EMPTY_TRASH_DELAY,
),
)
)
# Temporarily connect the cleanup handler (hard_delete calls delete)

View File

@ -1,4 +1,5 @@
import os
from datetime import timedelta
from unittest import mock
from django.conf import settings
@ -150,3 +151,36 @@ class TestBulkUpdate(DirectoriesMixin, TestCase):
)
tasks.bulk_update_documents([doc1.pk])
class TestEmptyTrashTask(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
"""
GIVEN:
- Existing document in trash
WHEN:
- Empty trash task is called without doc_ids
THEN:
- Document is only deleted if it has been in trash for more than delay (default 30 days)
"""
def test_empty_trash(self):
doc = Document.objects.create(
title="test",
content="my document",
checksum="wow",
added=timezone.now(),
created=timezone.now(),
modified=timezone.now(),
)
doc.delete()
self.assertEqual(Document.global_objects.count(), 1)
self.assertEqual(Document.objects.count(), 0)
tasks.empty_trash()
self.assertEqual(Document.global_objects.count(), 1)
doc.deleted_at = timezone.now() - timedelta(days=31)
doc.save()
tasks.empty_trash()
self.assertEqual(Document.global_objects.count(), 0)