paperless-ngx/src/documents/tests/utils.py

82 lines
2.4 KiB
Python
Raw Normal View History

import os
import shutil
import tempfile
from collections import namedtuple
2020-12-05 13:19:14 +01:00
from contextlib import contextmanager
from django.test import override_settings
def setup_directories():
dirs = namedtuple("Dirs", ())
dirs.data_dir = tempfile.mkdtemp()
dirs.scratch_dir = tempfile.mkdtemp()
dirs.media_dir = tempfile.mkdtemp()
dirs.consumption_dir = tempfile.mkdtemp()
2020-11-27 15:00:16 +01:00
dirs.index_dir = os.path.join(dirs.data_dir, "index")
dirs.originals_dir = os.path.join(dirs.media_dir, "documents", "originals")
dirs.thumbnail_dir = os.path.join(dirs.media_dir, "documents", "thumbnails")
2020-11-29 13:37:39 +01:00
dirs.archive_dir = os.path.join(dirs.media_dir, "documents", "archive")
2021-02-06 17:02:00 +01:00
dirs.logging_dir = os.path.join(dirs.data_dir, "log")
2020-11-27 15:00:16 +01:00
os.makedirs(dirs.index_dir, exist_ok=True)
os.makedirs(dirs.originals_dir, exist_ok=True)
2020-11-29 18:37:31 +01:00
os.makedirs(dirs.thumbnail_dir, exist_ok=True)
2020-11-29 13:37:39 +01:00
os.makedirs(dirs.archive_dir, exist_ok=True)
2021-02-06 17:02:00 +01:00
os.makedirs(dirs.logging_dir, exist_ok=True)
2020-12-05 13:19:14 +01:00
dirs.settings_override = override_settings(
DATA_DIR=dirs.data_dir,
SCRATCH_DIR=dirs.scratch_dir,
MEDIA_ROOT=dirs.media_dir,
ORIGINALS_DIR=dirs.originals_dir,
THUMBNAIL_DIR=dirs.thumbnail_dir,
2020-11-29 13:37:39 +01:00
ARCHIVE_DIR=dirs.archive_dir,
CONSUMPTION_DIR=dirs.consumption_dir,
2021-02-06 17:02:00 +01:00
LOGGING_DIR=dirs.logging_dir,
2020-11-27 15:00:16 +01:00
INDEX_DIR=dirs.index_dir,
2020-12-15 13:47:43 +01:00
MODEL_FILE=os.path.join(dirs.data_dir, "classification_model.pickle"),
MEDIA_LOCK=os.path.join(dirs.media_dir, "media.lock")
2020-11-27 15:00:16 +01:00
2020-12-05 13:19:14 +01:00
)
dirs.settings_override.enable()
return dirs
def remove_dirs(dirs):
shutil.rmtree(dirs.media_dir, ignore_errors=True)
shutil.rmtree(dirs.data_dir, ignore_errors=True)
shutil.rmtree(dirs.scratch_dir, ignore_errors=True)
shutil.rmtree(dirs.consumption_dir, ignore_errors=True)
2020-12-05 13:19:14 +01:00
dirs.settings_override.disable()
@contextmanager
def paperless_environment():
dirs = None
try:
dirs = setup_directories()
yield dirs
finally:
if dirs:
remove_dirs(dirs)
class DirectoriesMixin:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.dirs = None
def setUp(self) -> None:
self.dirs = setup_directories()
super(DirectoriesMixin, self).setUp()
def tearDown(self) -> None:
super(DirectoriesMixin, self).tearDown()
remove_dirs(self.dirs)