Fix empty trash task, including test
This commit is contained in:
parent
6841c744c9
commit
dd1f076275
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user