diff --git a/src/documents/tasks.py b/src/documents/tasks.py index 0679af30d..c0e1a111e 100644 --- a/src/documents/tasks.py +++ b/src/documents/tasks.py @@ -1,10 +1,12 @@ import hashlib import logging -import shutil import os +import shutil import uuid +import zipfile from typing import Optional +import magic import tqdm from asgiref.sync import async_to_sync from celery import Task @@ -166,9 +168,6 @@ def consume_file( document = None - import magic - import zipfile - mime_type = magic.from_file(input_doc.original_file, mime=True) if mime_type == "application/zip": with zipfile.ZipFile(input_doc.original_file, "r") as zip_ref: @@ -181,28 +180,34 @@ def consume_file( # copy file (taken from zipfile's extract) try: source = zip_ref.open(member) - target = open(os.path.join(input_doc.original_file.parent, filename), "wb") - logger.info(f"extracting {filename} from zipfile {input_doc.original_file}") - with source, target: - shutil.copyfileobj(source, target) - # continue with consumption if no barcode was found - document = Consumer().try_consume_file( - os.path.join(input_doc.original_file.parent, filename), - override_filename=overrides.filename, - override_title=overrides.title, - override_correspondent_id=overrides.correspondent_id, - override_document_type_id=overrides.document_type_id, - override_tag_ids=overrides.tag_ids, - override_storage_path_id=overrides.storage_path_id, - override_created=overrides.created, - override_asn=overrides.asn, - override_owner_id=overrides.owner_id, - override_view_users=overrides.view_users, - override_view_groups=overrides.view_groups, - override_change_users=overrides.change_users, - override_change_groups=overrides.change_groups, - task_id=self.request.id, + inputfile = input_doc.original_file + with open( + os.path.join(inputfile.parent, filename), + "wb", + ) as f: + logger.info( + f"extracting {filename} from zipfile {inputfile}", ) + with source, f: + shutil.copyfileobj(source, f) + # continue with consumption if no barcode was found + document = Consumer().try_consume_file( + os.path.join(inputfile.parent, filename), + override_filename=overrides.filename, + override_title=overrides.title, + override_correspondent_id=overrides.correspondent_id, + override_document_type_id=overrides.document_type_id, + override_tag_ids=overrides.tag_ids, + override_storage_path_id=overrides.storage_path_id, + override_created=overrides.created, + override_asn=overrides.asn, + override_owner_id=overrides.owner_id, + override_view_users=overrides.view_users, + override_view_groups=overrides.view_groups, + override_change_users=overrides.change_users, + override_change_groups=overrides.change_groups, + task_id=self.request.id, + ) except Exception as e: logger.warning("error extracting zipfile: " + str(e)) else: