The trashed document deletion action is now a background task.
Also, the trash can emptying view calls the trash can document celery task for each document. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -76,7 +76,9 @@ Other Changes
|
||||
images of document pages. The settings can be used together or separately
|
||||
depending on how much disk space saving is desired. These settings give control
|
||||
over the trade-off between disk space savings and higher CPU utilization.
|
||||
|
||||
- The trashed document deletion action is now a background task. This
|
||||
feature results is much faster trashed document deletion and trash
|
||||
can emptying.
|
||||
|
||||
Removals
|
||||
--------
|
||||
|
||||
@@ -317,6 +317,9 @@ class DocumentsApp(MayanAppConfig):
|
||||
routing_key='documents_periodic', delivery_mode=1
|
||||
),
|
||||
Queue('uploads', Exchange('uploads'), routing_key='uploads'),
|
||||
Queue(
|
||||
'documents', Exchange('documents'), routing_key='documents'
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -349,6 +352,9 @@ class DocumentsApp(MayanAppConfig):
|
||||
'documents.tasks.task_scan_duplicates_for': {
|
||||
'queue': 'uploads'
|
||||
},
|
||||
'documents.tasks.task_delete_document': {
|
||||
'queue': 'documents'
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -14,6 +14,9 @@ queue_documents_periodic = CeleryQueue(
|
||||
queue_uploads = CeleryQueue(
|
||||
name='uploads', label=_('Uploads')
|
||||
)
|
||||
queue_uploads = CeleryQueue(
|
||||
name='documents', label=_('Documents')
|
||||
)
|
||||
|
||||
queue_documents_periodic.add_task_type(
|
||||
name='documents.tasks.task_check_delete_periods',
|
||||
@@ -46,3 +49,7 @@ queue_uploads.add_task_type(
|
||||
name='documents.tasks.task_upload_new_version',
|
||||
label=_('Upload new document version')
|
||||
)
|
||||
queue_uploads.add_task_type(
|
||||
name='documents.tasks.task_delete_document',
|
||||
label=_('Delete a document')
|
||||
)
|
||||
|
||||
@@ -44,6 +44,18 @@ def task_clear_image_cache():
|
||||
logger.info('Finished document cache invalidation')
|
||||
|
||||
|
||||
@app.task(ignore_result=True)
|
||||
def task_delete_document(deleted_document_id):
|
||||
DeletedDocument = apps.get_model(
|
||||
app_label='documents', model_name='DeletedDocument'
|
||||
)
|
||||
|
||||
logger.debug('Executing')
|
||||
deleted_document = DeletedDocument.objects.get(pk=deleted_document_id)
|
||||
deleted_document.delete()
|
||||
logger.debug('Finshed')
|
||||
|
||||
|
||||
@app.task(ignore_result=True)
|
||||
def task_delete_stubs():
|
||||
Document = apps.get_model(
|
||||
|
||||
@@ -43,7 +43,7 @@ from ..permissions import (
|
||||
permission_empty_trash
|
||||
)
|
||||
from ..settings import setting_print_size
|
||||
from ..tasks import task_update_page_count
|
||||
from ..tasks import task_delete_document, task_update_page_count
|
||||
from ..utils import parse_range
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -95,7 +95,9 @@ class DeletedDocumentDeleteView(ConfirmView):
|
||||
obj=source_document
|
||||
)
|
||||
|
||||
instance.delete()
|
||||
task_delete_document.apply_async(
|
||||
kwargs={'deleted_document_id': instance.pk}
|
||||
)
|
||||
|
||||
def view_action(self):
|
||||
instance = get_object_or_404(DeletedDocument, pk=self.kwargs['pk'])
|
||||
@@ -364,7 +366,9 @@ class EmptyTrashCanView(ConfirmView):
|
||||
|
||||
def view_action(self):
|
||||
for deleted_document in DeletedDocument.objects.all():
|
||||
deleted_document.delete()
|
||||
task_delete_document.apply_async(
|
||||
kwargs={'deleted_document_id': deleted_document.pk}
|
||||
)
|
||||
|
||||
messages.success(self.request, _('Trash emptied successfully'))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user