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:
Roberto Rosario
2017-07-07 02:42:20 -04:00
parent c6de76822e
commit 829dcbf144
5 changed files with 35 additions and 4 deletions

View File

@@ -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
--------

View File

@@ -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'
},
}
)

View File

@@ -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')
)

View File

@@ -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(

View File

@@ -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'))