From d29e61c7da10c0283582bbd865466586bb3345b9 Mon Sep 17 00:00:00 2001 From: i701 Date: Mon, 24 Mar 2025 14:03:23 +0500 Subject: [PATCH] revert back to single settings.py file to fix authorization header not reading issue --- .env.example | 1 - .vscode/settings.json | 3 ++ apibase/asgi.py | 2 +- apibase/django/__init__.py | 0 apibase/django/local.py | 9 ------ apibase/django/production.py | 33 ------------------- apibase/django/tests.py | 0 apibase/{django/base.py => settings.py} | 43 ++++++++++++++++++++----- apibase/settings/sms.py | 0 apibase/wsgi.py | 2 +- manage.py | 2 +- 11 files changed, 41 insertions(+), 54 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 apibase/django/__init__.py delete mode 100644 apibase/django/local.py delete mode 100644 apibase/django/production.py delete mode 100644 apibase/django/tests.py rename apibase/{django/base.py => settings.py} (89%) delete mode 100644 apibase/settings/sms.py diff --git a/.env.example b/.env.example index f8cb818..f610463 100644 --- a/.env.example +++ b/.env.example @@ -6,7 +6,6 @@ POSTGRES_PASSWORD= POSTGRES_HOST= POSTGRES_PORT= DJANGO_SECURE_SSL_REDIRECT=False -DJANGO_SETTINGS_MODULE="apibase.django.local" ALLOWED_HOSTS="" CSRF_TRUSTED_ORIGINS="" CSRF_COOKIE_DOMAIN="" diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..91761a5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "djlint.showInstallError": false +} \ No newline at end of file diff --git a/apibase/asgi.py b/apibase/asgi.py index 42e677e..31366be 100644 --- a/apibase/asgi.py +++ b/apibase/asgi.py @@ -11,6 +11,6 @@ import os from django.core.asgi import get_asgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.django.local") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.settings") application = get_asgi_application() diff --git a/apibase/django/__init__.py b/apibase/django/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apibase/django/local.py b/apibase/django/local.py deleted file mode 100644 index c1c61fc..0000000 --- a/apibase/django/local.py +++ /dev/null @@ -1,9 +0,0 @@ -from .base import * -from apibase.env import BASE_DIR - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } -} diff --git a/apibase/django/production.py b/apibase/django/production.py deleted file mode 100644 index 3ee2242..0000000 --- a/apibase/django/production.py +++ /dev/null @@ -1,33 +0,0 @@ -from .base import * -from apibase.env import env - -DEBUG = env.bool("DJANGO_DEBUG", default=False) - -ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[]) - - -SECURE_SSL_REDIRECT = env("DJANGO_SECURE_SSL_REDIRECT", cast=bool) -SESSION_COOKIE_SECURE = True -CSRF_COOKIE_SECURE = True -SECURE_HSTS_SECONDS = env("SECURE_HSTS_SECONDS", default=3600, cast=int) -SECURE_HSTS_INCLUDE_SUBDOMAINS = True -SECURE_HSTS_PRELOAD = True -CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[]) -SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") -SECURE_BROWSER_XSS_FILTER = True -X_FRAME_OPTIONS = "DENY" -SECURE_CONTENT_TYPE_NOSNIFF = True - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql", - "NAME": env("POSTGRES_DATABASE"), - "USER": env("POSTGRES_USER"), - "PASSWORD": env("POSTGRES_PASSWORD"), - "HOST": env("POSTGRES_HOST"), - "PORT": env("POSTGRES_PORT"), - "OPTIONS": { - "pool": True, - }, - }, -} diff --git a/apibase/django/tests.py b/apibase/django/tests.py deleted file mode 100644 index e69de29..0000000 diff --git a/apibase/django/base.py b/apibase/settings.py similarity index 89% rename from apibase/django/base.py rename to apibase/settings.py index 6b21c4e..e850751 100644 --- a/apibase/django/base.py +++ b/apibase/settings.py @@ -28,11 +28,10 @@ env.read_env(os.path.join(BASE_DIR, ".env")) # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = env("SECRET_KEY", default=get_random_secret_key()) -# SECURITY WARNING: don't run with debug turned on in production! DEBUG = env.bool("DJANGO_DEBUG", default=True) -ALLOWED_HOSTS = ["*"] -# Add explicit hosts from environment +ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[]) + if DEBUG: INTERNAL_IPS = [ @@ -120,13 +119,41 @@ WSGI_APPLICATION = "apibase.wsgi.application" # Database # https://docs.djangoproject.com/en/5.0/ref/settings/#databases +if not DEBUG: + SECURE_SSL_REDIRECT = env("DJANGO_SECURE_SSL_REDIRECT", cast=bool) + SESSION_COOKIE_SECURE = True + CSRF_COOKIE_SECURE = True + SECURE_HSTS_SECONDS = env("SECURE_HSTS_SECONDS", default=3600, cast=int) + SECURE_HSTS_INCLUDE_SUBDOMAINS = True + SECURE_HSTS_PRELOAD = True + CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[]) + SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") + SECURE_BROWSER_XSS_FILTER = True + X_FRAME_OPTIONS = "DENY" + SECURE_CONTENT_TYPE_NOSNIFF = True -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", +# DATABASES +if DEBUG: + DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } + } +else: + DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": env("POSTGRES_DATABASE"), + "USER": env("POSTGRES_USER"), + "PASSWORD": env("POSTGRES_PASSWORD"), + "HOST": env("POSTGRES_HOST"), + "PORT": env("POSTGRES_PORT"), + "OPTIONS": { + "pool": True, + }, + }, } -} # More robust caching configuration diff --git a/apibase/settings/sms.py b/apibase/settings/sms.py deleted file mode 100644 index e69de29..0000000 diff --git a/apibase/wsgi.py b/apibase/wsgi.py index 7118702..a18da4e 100644 --- a/apibase/wsgi.py +++ b/apibase/wsgi.py @@ -11,6 +11,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.django.local") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.settings") application = get_wsgi_application() diff --git a/manage.py b/manage.py index 92315f4..fd16886 100644 --- a/manage.py +++ b/manage.py @@ -7,7 +7,7 @@ import sys def main(): """Run administrative tasks.""" - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.django.local") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: