From f5034ad0ac75eab4f8a34e03eb10a8e3c0d20a59 Mon Sep 17 00:00:00 2001 From: Kristof Daja <22156894+theriverman@users.noreply.github.com> Date: Tue, 7 Jan 2025 23:33:25 +0100 Subject: [PATCH] models.py - added guard for missing OPTIONS settings.py - comments added for optional fields --- DjangoExampleProject/settings.py | 20 ++++++++++---------- django_minio_backend/models.py | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/DjangoExampleProject/settings.py b/DjangoExampleProject/settings.py index 2a5e075..90a63e5 100644 --- a/DjangoExampleProject/settings.py +++ b/DjangoExampleProject/settings.py @@ -157,10 +157,10 @@ "MINIO_ACCESS_KEY": os.getenv("GH_MINIO_ACCESS_KEY", "Q3AM3UQ867SPQQA43P2F"), "MINIO_SECRET_KEY": os.getenv("GH_MINIO_SECRET_KEY", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"), "MINIO_USE_HTTPS": bool(distutils.util.strtobool(os.getenv("GH_MINIO_USE_HTTPS", "true"))), - "MINIO_REGION": os.getenv("GH_MINIO_REGION", "us-east-1"), - "MINIO_URL_EXPIRY_HOURS": timedelta(days=1), # Default is 7 days (longest) if not defined - "MINIO_CONSISTENCY_CHECK_ON_START": True, - "MINIO_STATIC_FILES_BUCKET": "my-static-files-bucket", + "MINIO_REGION": os.getenv("GH_MINIO_REGION", "us-east-1"), # OPTIONAL + "MINIO_URL_EXPIRY_HOURS": timedelta(days=1), # OPTIONAL. Default is 7 days (longest) if not defined + "MINIO_CONSISTENCY_CHECK_ON_START": True, # OPTIONAL. + "MINIO_STATIC_FILES_BUCKET": "my-static-files-bucket", # OPTIONAL. Default = auto-generated-bucket-static-files }, }, "default": { @@ -173,13 +173,13 @@ "MINIO_ACCESS_KEY": os.getenv("GH_MINIO_ACCESS_KEY", "Q3AM3UQ867SPQQA43P2F"), "MINIO_SECRET_KEY": os.getenv("GH_MINIO_SECRET_KEY", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"), "MINIO_USE_HTTPS": bool(distutils.util.strtobool(os.getenv("GH_MINIO_USE_HTTPS", "true"))), - "MINIO_REGION": os.getenv("GH_MINIO_REGION", "us-east-1"), - "MINIO_DEFAULT_BUCKET": "django-minio-backend-default-dev-bucket", # PRIVATE by default if not added below - "MINIO_PRIVATE_BUCKETS": ['django-backend-dev-private', 'my-media-files-bucket', ], - "MINIO_PUBLIC_BUCKETS": ['django-backend-dev-public', 't5p2g08k31', '7xi7lx9rjh'], + "MINIO_REGION": os.getenv("GH_MINIO_REGION", "us-east-1"), # OPTIONAL + "MINIO_DEFAULT_BUCKET": "django-minio-backend-default-dev-bucket", # OPTIONAL. Default = auto-generated-bucket-media-files | PRIVATE by default if not added below + "MINIO_PRIVATE_BUCKETS": ['django-backend-dev-private', 'my-media-files-bucket', ], # OPTIONAL + "MINIO_PUBLIC_BUCKETS": ['django-backend-dev-public', 't5p2g08k31', '7xi7lx9rjh'], # OPTIONAL "MINIO_URL_EXPIRY_HOURS": timedelta(days=1), # OPTIONAL. Default is 7 days (longest) if not defined - "MINIO_CONSISTENCY_CHECK_ON_START": True, - "MINIO_BUCKET_CHECK_ON_SAVE": False, + "MINIO_CONSISTENCY_CHECK_ON_START": True, # OPTIONAL. + "MINIO_BUCKET_CHECK_ON_SAVE": False, # OPTIONAL. "MINIO_POLICY_HOOKS": [ # List[Tuple[str, dict]] # OPTIONAL # ('django-backend-dev-private', dummy_policy) ], diff --git a/django_minio_backend/models.py b/django_minio_backend/models.py index d796b96..b0a6284 100644 --- a/django_minio_backend/models.py +++ b/django_minio_backend/models.py @@ -79,6 +79,8 @@ def __init__(self, storage_name: str = 'default', *args, **kwargs): + if not storages.backends[storage_name].get("OPTIONS"): + raise ConfigurationError("OPTIONS not present in STORAGES in settings.py") # received kwargs are preferred. missing keys are filled from storages.backends kwargs = {**kwargs, **{k: v for k, v in storages.backends[storage_name]["OPTIONS"].items() if k not in kwargs}} @@ -469,6 +471,7 @@ class MinioBackendStatic(MinioBackend): def __init__(self, *args, **kwargs): static_files_bucket = kwargs.get("MINIO_STATIC_FILES_BUCKET", self.DEFAULT_STATIC_FILES_BUCKET) + logger.debug(f"MinioBackendStatic.static_files_bucket = {static_files_bucket}") kwargs["MINIO_PUBLIC_BUCKETS"] = [static_files_bucket, ] # hardcoded. static files must be public super().__init__(bucket_name=static_files_bucket, storage_name="staticfiles", *args, **kwargs)