diff --git a/src/documents/management/commands/document_importer.py b/src/documents/management/commands/document_importer.py index c33b6b4ee..418b2bb40 100644 --- a/src/documents/management/commands/document_importer.py +++ b/src/documents/management/commands/document_importer.py @@ -370,7 +370,12 @@ class Command(CryptMixin, BaseCommand): self.stdout.write("Copy files into paperless...") document_records = [ - record + { + "pk": record["pk"], + EXPORTER_FILE_NAME: record[EXPORTER_FILE_NAME], + EXPORTER_THUMBNAIL_NAME: record.get(EXPORTER_THUMBNAIL_NAME), + EXPORTER_ARCHIVE_NAME: record.get(EXPORTER_ARCHIVE_NAME), + } for manifest_path in self.manifest_paths for record in iter_manifest_records(manifest_path) if record["model"] == "documents.document" @@ -382,13 +387,13 @@ class Command(CryptMixin, BaseCommand): doc_file = record[EXPORTER_FILE_NAME] document_path = self.source / doc_file - if EXPORTER_THUMBNAIL_NAME in record: + if record[EXPORTER_THUMBNAIL_NAME]: thumb_file = record[EXPORTER_THUMBNAIL_NAME] thumbnail_path = (self.source / thumb_file).resolve() else: thumbnail_path = None - if EXPORTER_ARCHIVE_NAME in record: + if record[EXPORTER_ARCHIVE_NAME]: archive_file = record[EXPORTER_ARCHIVE_NAME] archive_path = self.source / archive_file else: diff --git a/src/documents/tests/test_importer_profile_phase4.py b/src/documents/tests/test_importer_profile_phase4.py index cc8d236ef..41a9fb379 100644 --- a/src/documents/tests/test_importer_profile_phase4.py +++ b/src/documents/tests/test_importer_profile_phase4.py @@ -99,3 +99,30 @@ class TestImporterProfilePhase4(DirectoriesMixin, SampleDirMixin, TestCase): first = False out.write("\n]\n") tmp_path.unlink(missing_ok=True) + + # Baseline: full record list (old _import_files_from_manifest approach) + with profile_block("baseline: full record list (doc records only)"): + _ = [ + record + for path in manifest_paths + for record in iter_manifest_records(path) + if record["model"] == "documents.document" + ] + + # New: slim dict list (current _import_files_from_manifest approach) + from documents.settings import EXPORTER_ARCHIVE_NAME + from documents.settings import EXPORTER_FILE_NAME + from documents.settings import EXPORTER_THUMBNAIL_NAME + + with profile_block("new: slim dict list (4 keys only)"): + _ = [ + { + "pk": record["pk"], + EXPORTER_FILE_NAME: record[EXPORTER_FILE_NAME], + EXPORTER_THUMBNAIL_NAME: record.get(EXPORTER_THUMBNAIL_NAME), + EXPORTER_ARCHIVE_NAME: record.get(EXPORTER_ARCHIVE_NAME), + } + for path in manifest_paths + for record in iter_manifest_records(path) + if record["model"] == "documents.document" + ]