From 312cb216fc67fdf6ad958a0d1db89bf215f88610 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 25 Oct 2014 01:58:03 -0400 Subject: [PATCH] Add new version upload background task --- mayan/apps/sources/tasks.py | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/mayan/apps/sources/tasks.py b/mayan/apps/sources/tasks.py index 5e1aec7dfb..9a7cb4b249 100644 --- a/mayan/apps/sources/tasks.py +++ b/mayan/apps/sources/tasks.py @@ -31,19 +31,33 @@ def task_upload_document(source_id, file_path, label, document_type_id, expand=F user = None with File(file=open(file_path, mode='rb')) as file_object: - #try: - result = source.upload_document(file_object, label=label, document_type=document_type, expand=expand, metadata_dict_list=metadata_dict_list, user=user, command_line=command_line, description=description, language=language) - #except NewDocumentVersionNotAllowed: - # messages.error(request, _(u'New version uploads are not allowed for this document.')) + source.upload_document(file_object, label=label, document_type=document_type, expand=expand, metadata_dict_list=metadata_dict_list, user=user, command_line=command_line, description=description, language=language) # TODO: delete temporary_file - #if not document: - # if result['is_compressed'] is None: - # messages.success(request, _(u'File uploaded successfully.')) + # TODO: Report/record how was file uploaded + # if result['is_compressed'] is None: + # messages.success(request, _(u'File uploaded successfully.')) - # if result['is_compressed'] is True: - # messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.')) + # if result['is_compressed'] is True: + # messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.')) - # if result['is_compressed'] is False: - # messages.warning(request, _(u'File was not a compressed file, uploaded as it was.')) + # if result['is_compressed'] is False: + # messages.warning(request, _(u'File was not a compressed file, uploaded as it was.')) + + +@app.task(ignore_result=True) +def task_upload_new_version(source_id, file_path, document_id, user_id, version_update=None, comment=None): + source = Source.objects.get_subclass(pk=source_id) + document = Document.objects.get(pk=document_id) + + if user_id: + user = User.objects.get(pk=user_id) + else: + user = None + + # Use File class otherwise we get error: + # 'file' object has no attribute '_committed' + + with File(file=open(file_path, mode='rb')) as file_object: + document.new_version(file=file_object, user=user, version_update=version_update, comment=comment)