From a2f77ab9cfa78aae6886e36f1db9c271aa3ce2e7 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Wed, 31 Jul 2024 12:10:38 -0400 Subject: [PATCH] feat: read CORS_ALLOWED_ORIGINS, SITE_URL & LOGGING_JSON from the env --- steering/settings.py | 61 ++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/steering/settings.py b/steering/settings.py index 5b5c00f5..084ab4d1 100644 --- a/steering/settings.py +++ b/steering/settings.py @@ -1,3 +1,4 @@ +import json import os import sys from pathlib import Path @@ -26,7 +27,10 @@ SITE_ID = 1 # Must be set if DEBUG is False ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", default="127.0.0.1,localhost").split(",") -CORS_ALLOWED_ORIGINS = ["http://localhost:8080", "http://localhost:8040"] +CORS_ALLOWED_ORIGINS = os.getenv( + "CORS_ALLOWED_ORIGINS", + default="http://localhost:8080,http://localhost:8040", +).split(",") CORS_ALLOW_CREDENTIALS = True CORS_ALLOW_HEADERS = list(default_headers) + [ "content-disposition", @@ -206,7 +210,10 @@ AURA_PROTO = os.getenv("AURA_PROTO", default="http") AURA_HOST = os.getenv("AURA_HOST", default="localhost") # SITE_URL is used by django-oidc-provider and openid-configuration will break if not set correctly -SITE_URL = f"{AURA_PROTO}://{AURA_HOST}:{PORT}" if PORT else f"{AURA_PROTO}://{AURA_HOST}" +SITE_URL = os.getenv( + "SITE_URL", + default=f"{AURA_PROTO}://{AURA_HOST}:{PORT}" if PORT else f"{AURA_PROTO}://{AURA_HOST}", +) if AURA_PROTO == "https": CSRF_TRUSTED_ORIGINS = [f"{AURA_PROTO}://{AURA_HOST}"] @@ -215,31 +222,35 @@ OPERATION_MODE_TYPE = Literal["default", "tests"] OPERATION_MODE: OPERATION_MODE_TYPE OPERATION_MODE = cast(OPERATION_MODE_TYPE, os.getenv("OPERATION_MODE", default="default")) -LOGGING = { - "version": 1, - "disable_existing_loggers": False, - "formatters": { - "django.server": { - "()": "django.utils.log.ServerFormatter", - "format": "[{server_time}] {message}", - "style": "{", - } - }, - "handlers": { - "file": { - "class": "logging.FileHandler", - "filename": os.path.abspath(os.path.join(BASE_DIR, "logs", "steering.log")), - "formatter": "django.server", +# TODO: find a better way. This is limited to settings that can be JSON-encoded. +if "LOGGING_JSON" in os.environ: + LOGGING = json.loads(os.getenv("LOGGING_JSON")) +else: + LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "django.server": { + "()": "django.utils.log.ServerFormatter", + "format": "[{server_time}] {message}", + "style": "{", + } }, - }, - "loggers": { - "django": { - "handlers": ["file"], - "level": os.getenv("STEERING_LOG_LEVEL", "INFO"), - "propagate": True, + "handlers": { + "file": { + "class": "logging.FileHandler", + "filename": os.path.abspath(os.path.join(BASE_DIR, "logs", "steering.log")), + "formatter": "django.server", + }, }, - }, -} + "loggers": { + "django": { + "handlers": ["file"], + "level": os.getenv("STEERING_LOG_LEVEL", "INFO"), + "propagate": True, + }, + }, + } # ATTENTION: # Don’t add any configuration settings after this, so that administrators can override them. -- GitLab