mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Ensure all creations of directories create the parents too (#5711)
This commit is contained in:
		@@ -233,10 +233,10 @@ class Consumer(LoggingMixin):
 | 
			
		||||
        """
 | 
			
		||||
        Ensure all required directories exist before attempting to use them
 | 
			
		||||
        """
 | 
			
		||||
        os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
        os.makedirs(settings.THUMBNAIL_DIR, exist_ok=True)
 | 
			
		||||
        os.makedirs(settings.ORIGINALS_DIR, exist_ok=True)
 | 
			
		||||
        os.makedirs(settings.ARCHIVE_DIR, exist_ok=True)
 | 
			
		||||
        settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        settings.THUMBNAIL_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        settings.ORIGINALS_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        settings.ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
    def pre_check_asn_value(self):
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ def open_index(recreate=False) -> FileIndex:
 | 
			
		||||
        logger.exception("Error while opening the index, recreating.")
 | 
			
		||||
 | 
			
		||||
    if not os.path.isdir(settings.INDEX_DIR):
 | 
			
		||||
        os.makedirs(settings.INDEX_DIR, exist_ok=True)
 | 
			
		||||
        settings.INDEX_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
    return create_in(settings.INDEX_DIR, get_schema())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
import logging
 | 
			
		||||
import multiprocessing
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
import tqdm
 | 
			
		||||
from django import db
 | 
			
		||||
@@ -52,7 +51,7 @@ class Command(MultiProcessMixin, ProgressBarMixin, BaseCommand):
 | 
			
		||||
        self.handle_processes_mixin(**options)
 | 
			
		||||
        self.handle_progress_bar_mixin(**options)
 | 
			
		||||
 | 
			
		||||
        os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
        settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
        overwrite = options["overwrite"]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -182,7 +182,7 @@ class Command(BaseCommand):
 | 
			
		||||
        if self.zip_export:
 | 
			
		||||
            self.original_target = self.target
 | 
			
		||||
 | 
			
		||||
            os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
            settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
            temp_dir = tempfile.TemporaryDirectory(
 | 
			
		||||
                dir=settings.SCRATCH_DIR,
 | 
			
		||||
                prefix="paperless-export",
 | 
			
		||||
 
 | 
			
		||||
@@ -243,9 +243,9 @@ class Command(BaseCommand):
 | 
			
		||||
                    ) from e
 | 
			
		||||
 | 
			
		||||
    def _import_files_from_manifest(self, progress_bar_disable):
 | 
			
		||||
        os.makedirs(settings.ORIGINALS_DIR, exist_ok=True)
 | 
			
		||||
        os.makedirs(settings.THUMBNAIL_DIR, exist_ok=True)
 | 
			
		||||
        os.makedirs(settings.ARCHIVE_DIR, exist_ok=True)
 | 
			
		||||
        settings.ORIGINALS_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        settings.THUMBNAIL_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        settings.ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
        self.stdout.write("Copy files into paperless...")
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -322,7 +322,7 @@ class DocumentParser(LoggingMixin):
 | 
			
		||||
        super().__init__()
 | 
			
		||||
        self.logging_group = logging_group
 | 
			
		||||
        self.settings = self.get_settings()
 | 
			
		||||
        os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
        settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        self.tempdir = Path(
 | 
			
		||||
            tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR),
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,4 @@
 | 
			
		||||
import datetime
 | 
			
		||||
import os
 | 
			
		||||
import shutil
 | 
			
		||||
from uuid import uuid4
 | 
			
		||||
 | 
			
		||||
from dateutil import tz
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
@@ -13,17 +10,6 @@ from documents.parsers import parse_date_generator
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestDate(TestCase):
 | 
			
		||||
    SAMPLE_FILES = os.path.join(
 | 
			
		||||
        os.path.dirname(__file__),
 | 
			
		||||
        "../../paperless_tesseract/tests/samples",
 | 
			
		||||
    )
 | 
			
		||||
    SCRATCH = f"/tmp/paperless-tests-{str(uuid4())[:8]}"
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        os.makedirs(self.SCRATCH, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        shutil.rmtree(self.SCRATCH)
 | 
			
		||||
 | 
			
		||||
    def test_date_format_1(self):
 | 
			
		||||
        text = "lorem ipsum 130218 lorem ipsum"
 | 
			
		||||
@@ -93,7 +79,6 @@ class TestDate(TestCase):
 | 
			
		||||
            datetime.datetime(2020, 3, 1, 0, 0, tzinfo=tz.gettz(settings.TIME_ZONE)),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    @override_settings(SCRATCH_DIR=SCRATCH)
 | 
			
		||||
    def test_date_format_9(self):
 | 
			
		||||
        text = "lorem ipsum\n27. Nullmonth 2020\nMärz 2020\nlorem ipsum"
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
 
 | 
			
		||||
@@ -470,12 +470,12 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_try_delete_empty_directories(self):
 | 
			
		||||
        # Create our working directory
 | 
			
		||||
        tmp = os.path.join(settings.ORIGINALS_DIR, "test_delete_empty")
 | 
			
		||||
        os.makedirs(tmp)
 | 
			
		||||
        tmp: Path = settings.ORIGINALS_DIR / "test_delete_empty"
 | 
			
		||||
        tmp.mkdir(exist_ok=True, parents=True)
 | 
			
		||||
 | 
			
		||||
        os.makedirs(os.path.join(tmp, "notempty"))
 | 
			
		||||
        Path(os.path.join(tmp, "notempty", "file")).touch()
 | 
			
		||||
        os.makedirs(os.path.join(tmp, "notempty", "empty"))
 | 
			
		||||
        (tmp / "notempty").mkdir(exist_ok=True, parents=True)
 | 
			
		||||
        (tmp / "notempty" / "file").touch()
 | 
			
		||||
        (tmp / "notempty" / "empty").mkdir(exist_ok=True, parents=True)
 | 
			
		||||
 | 
			
		||||
        delete_empty_directories(
 | 
			
		||||
            os.path.join(tmp, "notempty", "empty"),
 | 
			
		||||
@@ -647,7 +647,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test
 | 
			
		||||
        existing_archive_file = os.path.join(settings.ARCHIVE_DIR, "none", "my_doc.pdf")
 | 
			
		||||
        Path(original).touch()
 | 
			
		||||
        Path(archive).touch()
 | 
			
		||||
        os.makedirs(os.path.join(settings.ARCHIVE_DIR, "none"))
 | 
			
		||||
        (settings.ARCHIVE_DIR / "none").mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        Path(existing_archive_file).touch()
 | 
			
		||||
        doc = Document.objects.create(
 | 
			
		||||
            mime_type="application/pdf",
 | 
			
		||||
 
 | 
			
		||||
@@ -904,7 +904,7 @@ class PostDocumentView(GenericAPIView):
 | 
			
		||||
 | 
			
		||||
        t = int(mktime(datetime.now().timetuple()))
 | 
			
		||||
 | 
			
		||||
        os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
        settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
        temp_file_path = Path(tempfile.mkdtemp(dir=settings.SCRATCH_DIR)) / Path(
 | 
			
		||||
            pathvalidate.sanitize_filename(doc_name),
 | 
			
		||||
@@ -1136,7 +1136,7 @@ class BulkDownloadView(GenericAPIView):
 | 
			
		||||
        content = serializer.validated_data.get("content")
 | 
			
		||||
        follow_filename_format = serializer.validated_data.get("follow_formatting")
 | 
			
		||||
 | 
			
		||||
        os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
        settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        temp = tempfile.NamedTemporaryFile(
 | 
			
		||||
            dir=settings.SCRATCH_DIR,
 | 
			
		||||
            suffix="-compressed-archive",
 | 
			
		||||
 
 | 
			
		||||
@@ -689,7 +689,7 @@ USE_TZ = True
 | 
			
		||||
 | 
			
		||||
setup_logging_queues()
 | 
			
		||||
 | 
			
		||||
os.makedirs(LOGGING_DIR, exist_ok=True)
 | 
			
		||||
LOGGING_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
LOGROTATE_MAX_SIZE = os.getenv("PAPERLESS_LOGROTATE_MAX_SIZE", 1024 * 1024)
 | 
			
		||||
LOGROTATE_MAX_BACKUPS = os.getenv("PAPERLESS_LOGROTATE_MAX_BACKUPS", 20)
 | 
			
		||||
 
 | 
			
		||||
@@ -710,7 +710,7 @@ class MailAccountHandler(LoggingMixin):
 | 
			
		||||
                    f"{message.subject} from {message.from_}",
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
                os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
                settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
                temp_dir = Path(
 | 
			
		||||
                    tempfile.mkdtemp(
 | 
			
		||||
@@ -793,7 +793,7 @@ class MailAccountHandler(LoggingMixin):
 | 
			
		||||
        tag_ids,
 | 
			
		||||
        doc_type,
 | 
			
		||||
    ):
 | 
			
		||||
        os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
 | 
			
		||||
        settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True)
 | 
			
		||||
        _, temp_filename = tempfile.mkstemp(
 | 
			
		||||
            prefix="paperless-mail-",
 | 
			
		||||
            dir=settings.SCRATCH_DIR,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user