""" Django settings for app project. Generated by 'django-admin startproject' using Django 5.0.4. For more information on this file, see https://docs.djangoproject.com/en/5.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/5.0/ref/settings/ """ from pathlib import Path from dotenv import load_dotenv from os import getenv # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent load_dotenv(BASE_DIR / ".env") # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = getenv("SECRET", "not_secure") # SECURITY WARNING: don't run with debug turned on in production! DEBUG = getenv("ENV", "prod") == "dev" ALLOWED_HOSTS = [host.strip() for host in getenv("ALLOWED_HOSTS").split(",") if host] CSRF_TRUSTED_ORIGINS = [host.strip() for host in getenv("CSRF_TRUSTED_ORIGINS").split(",") if host] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', "corsheaders", "django_vite", "user", "home", "blog" ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', "corsheaders.middleware.CorsMiddleware", 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'app.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'app.wsgi.application' # Database # https://docs.djangoproject.com/en/5.0/ref/settings/#databases match getenv("DB_ENGINE"): case "pgsql": DB = { "ENGINE": "django.db.backends.postgresql", "NAME": getenv("DB_NAME"), "USER": getenv("DB_USER"), "PASSWORD": getenv("DB_PASSWORD"), "HOST": getenv("DB_HOST", "localhost"), "PORT": int(getenv("DB_PORT", 5432)), } case _: DB = { "ENGINE": "django.db.backends.sqlite3", "NAME": BASE_DIR / getenv("SQLITE_REL_PATH", "db.sqlite3"), } DATABASES = { 'default': DB } # Password validation # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/5.0/topics/i18n/ LANGUAGE_CODE = 'fr-fr' TIME_ZONE = 'Europe/Paris' USE_I18N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/5.0/howto/static-files/ STATIC_URL = 'static/' STATICFILES_DIRS = [] # Default primary key field type # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' AUTH_USER_MODEL = "user.User" LOGIN_REDIRECT_URL = "/" LOGIN_URL = "/user/login/" LOGOUT_REDIRECT_URL = "/user/login/" SESSION_COOKIE_AGE = 60 * 60 * 24 * 30 DJANGO_VITE = { "default": { "dev_mode": DEBUG, "manifest_path": BASE_DIR / "frontend/dist/manifest.json", "dev_server_host": getenv("DEV_SERVER_HOST", "localhost"), "dev_server_port": int(getenv("DEV_SERVER_PORT", 8080)), } } STATICFILES_DIRS += BASE_DIR / "frontend/dist",