Refactor: Clean up settings files to eliminate duplication
- Remove duplicate FRONTEND_URL from base.py (was defined twice) - Move LOGGING configuration from base.py to production.py (production-specific) - Keep base.py minimal with only universal settings - Verify EMAIL and AWS/STORAGES are production-only - Update multitenancy.py import to not reference LOGGING from base.py This ensures proper separation of concerns: - base.py: Universal settings (DATABASES, CORS, CSRF, SECURITY basics) - local.py: Development-specific (CSP, debug tools, console email, eager celery) - production.py: Production-specific (LOGGING, EMAIL, AWS/S3, SECURITY headers, Sentry) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,16 @@ if READ_DOT_ENV_FILE:
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#debug
|
||||
DEBUG = env.bool("DJANGO_DEBUG", False)
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
|
||||
SECRET_KEY = env(
|
||||
"DJANGO_SECRET_KEY",
|
||||
default="JETIHIJaLl2niIyj134Crg2S2dTURSzyXtd02XPicYcjaK5lJb1otLmNHqs6ZVs0", # DEVELOPMENT DEFAULT ONLY
|
||||
)
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
|
||||
ALLOWED_HOSTS = env.list(
|
||||
"DJANGO_ALLOWED_HOSTS",
|
||||
default=["localhost", "0.0.0.0", "127.0.0.1", ".lvh.me", "lvh.me", "smoothschedule.com"],
|
||||
)
|
||||
# Local time zone. Choices are
|
||||
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
|
||||
# though not all of them may be available with every OS.
|
||||
@@ -48,6 +58,7 @@ LOCALE_PATHS = [str(BASE_DIR / "locale")]
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
|
||||
DATABASES = {"default": env.db("DATABASE_URL")}
|
||||
DATABASES["default"]["ATOMIC_REQUESTS"] = True
|
||||
DATABASES["default"]["CONN_MAX_AGE"] = env.int("DJANGO_CONN_MAX_AGE", default=0)
|
||||
# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-DEFAULT_AUTO_FIELD
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
@@ -186,7 +197,7 @@ CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#fixture-dirs
|
||||
FIXTURE_DIRS = (str(APPS_DIR / "fixtures"),)
|
||||
|
||||
# SECURITY
|
||||
# SECURITY - Base settings (HttpOnly cookies for all environments)
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-httponly
|
||||
SESSION_COOKIE_HTTPONLY = True
|
||||
@@ -195,15 +206,11 @@ CSRF_COOKIE_HTTPONLY = True
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#x-frame-options
|
||||
X_FRAME_OPTIONS = "DENY"
|
||||
|
||||
# EMAIL
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#email-backend
|
||||
EMAIL_BACKEND = env(
|
||||
"DJANGO_EMAIL_BACKEND",
|
||||
default="django.core.mail.backends.smtp.EmailBackend",
|
||||
)
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#email-timeout
|
||||
EMAIL_TIMEOUT = 5
|
||||
# FRONTEND URLS
|
||||
# -------------------------------------------------------------------------------
|
||||
FRONTEND_URL = env("FRONTEND_URL", default="http://localhost:5173")
|
||||
PLATFORM_BASE_URL = env("PLATFORM_BASE_URL", default="http://platform.lvh.me:5173")
|
||||
|
||||
|
||||
# ADMIN
|
||||
# ------------------------------------------------------------------------------
|
||||
@@ -217,29 +224,6 @@ MANAGERS = ADMINS
|
||||
# Force the `admin` sign in process to go through the `django-allauth` workflow
|
||||
DJANGO_ADMIN_FORCE_ALLAUTH = env.bool("DJANGO_ADMIN_FORCE_ALLAUTH", default=False)
|
||||
|
||||
# LOGGING
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#logging
|
||||
# See https://docs.djangoproject.com/en/dev/topics/logging for
|
||||
# more details on how to customize your logging configuration.
|
||||
LOGGING = {
|
||||
"version": 1,
|
||||
"disable_existing_loggers": False,
|
||||
"formatters": {
|
||||
"verbose": {
|
||||
"format": "%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s",
|
||||
},
|
||||
},
|
||||
"handlers": {
|
||||
"console": {
|
||||
"level": "DEBUG",
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "verbose",
|
||||
},
|
||||
},
|
||||
"root": {"level": "INFO", "handlers": ["console"]},
|
||||
}
|
||||
|
||||
REDIS_URL = env("REDIS_URL", default="redis://redis:6379/0")
|
||||
REDIS_SSL = REDIS_URL.startswith("rediss://")
|
||||
|
||||
@@ -417,5 +401,3 @@ MICROSOFT_OAUTH_CLIENT_ID = env("MICROSOFT_OAUTH_CLIENT_ID", default="")
|
||||
MICROSOFT_OAUTH_CLIENT_SECRET = env("MICROSOFT_OAUTH_CLIENT_SECRET", default="")
|
||||
MICROSOFT_OAUTH_TENANT_ID = env("MICROSOFT_OAUTH_TENANT_ID", default="common")
|
||||
|
||||
# Frontend URL (for OAuth callback redirects)
|
||||
FRONTEND_URL = env("FRONTEND_URL", default="http://platform.lvh.me:5173")
|
||||
|
||||
@@ -4,7 +4,7 @@ This file extends base.py and adds django-tenants configuration
|
||||
"""
|
||||
|
||||
from .base import * # noqa
|
||||
from .base import INSTALLED_APPS, MIDDLEWARE, DATABASES, LOGGING, env
|
||||
from .base import INSTALLED_APPS, MIDDLEWARE, DATABASES, env
|
||||
|
||||
# =============================================================================
|
||||
# MULTI-TENANCY CONFIGURATION (django-tenants)
|
||||
|
||||
Reference in New Issue
Block a user