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
|
@shared_task
|
||||||
def empty_trash(doc_ids=None):
|
def empty_trash(doc_ids=None):
|
||||||
cutoff = timezone.localtime(timezone.now()) - timedelta(
|
|
||||||
days=settings.EMPTY_TRASH_DELAY,
|
|
||||||
)
|
|
||||||
documents = (
|
documents = (
|
||||||
Document.deleted_objects.filter(id__in=doc_ids)
|
Document.deleted_objects.filter(id__in=doc_ids)
|
||||||
if doc_ids is not None
|
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)
|
# Temporarily connect the cleanup handler (hard_delete calls delete)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
from datetime import timedelta
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -150,3 +151,36 @@ class TestBulkUpdate(DirectoriesMixin, TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
tasks.bulk_update_documents([doc1.pk])
|
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