mirror of
https://github.com/jointakahe/takahe.git
synced 2024-06-02 21:39:28 +00:00
158 lines
4.6 KiB
Python
158 lines
4.6 KiB
Python
import os
|
|
import sys
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
|
|
|
# Application definition
|
|
|
|
INSTALLED_APPS = [
|
|
"django.contrib.admin",
|
|
"django.contrib.auth",
|
|
"django.contrib.contenttypes",
|
|
"django.contrib.sessions",
|
|
"django.contrib.messages",
|
|
"django.contrib.staticfiles",
|
|
"django_htmx",
|
|
"core",
|
|
"activities",
|
|
"users",
|
|
"stator",
|
|
]
|
|
|
|
MIDDLEWARE = [
|
|
"django.middleware.security.SecurityMiddleware",
|
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
|
"django.middleware.common.CommonMiddleware",
|
|
"django.middleware.csrf.CsrfViewMiddleware",
|
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
|
"django.contrib.messages.middleware.MessageMiddleware",
|
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
|
"django_htmx.middleware.HtmxMiddleware",
|
|
"core.middleware.ConfigLoadingMiddleware",
|
|
"users.middleware.IdentityMiddleware",
|
|
]
|
|
|
|
ROOT_URLCONF = "takahe.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",
|
|
"core.context.config_context",
|
|
],
|
|
},
|
|
},
|
|
]
|
|
|
|
WSGI_APPLICATION = "takahe.wsgi.application"
|
|
|
|
DATABASES = {
|
|
"default": {
|
|
"ENGINE": "django.db.backends.postgresql_psycopg2",
|
|
"HOST": os.environ.get("PGHOST", "localhost"),
|
|
"PORT": os.environ.get("PGPORT", 5432),
|
|
"NAME": os.environ.get("PGDATABASE", "takahe"),
|
|
"USER": os.environ.get("PGUSER", "postgres"),
|
|
"PASSWORD": os.environ.get("PGPASSWORD"),
|
|
}
|
|
}
|
|
|
|
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",
|
|
},
|
|
]
|
|
|
|
LANGUAGE_CODE = "en-us"
|
|
|
|
TIME_ZONE = "UTC"
|
|
|
|
USE_I18N = True
|
|
|
|
USE_TZ = True
|
|
|
|
STATIC_URL = "static/"
|
|
|
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
|
|
|
AUTH_USER_MODEL = "users.User"
|
|
|
|
LOGIN_URL = "/auth/login/"
|
|
LOGOUT_URL = "/auth/logout/"
|
|
LOGIN_REDIRECT_URL = "/"
|
|
LOGOUT_REDIRECT_URL = "/"
|
|
|
|
STATICFILES_FINDERS = [
|
|
"django.contrib.staticfiles.finders.FileSystemFinder",
|
|
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
|
|
]
|
|
|
|
STATICFILES_DIRS = [
|
|
BASE_DIR / "static",
|
|
]
|
|
|
|
ALLOWED_HOSTS = ["*"]
|
|
|
|
### User-configurable options, pulled from the environment ###
|
|
|
|
MAIN_DOMAIN = os.environ["TAKAHE_MAIN_DOMAIN"]
|
|
if "/" in MAIN_DOMAIN:
|
|
print("TAKAHE_MAIN_DOMAIN should be just the domain name - no https:// or path")
|
|
sys.exit(1)
|
|
|
|
|
|
if os.environ.get("TAKAHE_EMAIL_CONSOLE_ONLY"):
|
|
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
|
|
EMAIL_FROM = "test@example.com"
|
|
else:
|
|
EMAIL_FROM = os.environ["TAKAHE_EMAIL_FROM"]
|
|
if "TAKAHE_EMAIL_SENDGRID_KEY" in os.environ:
|
|
EMAIL_HOST = "smtp.sendgrid.net"
|
|
EMAIL_PORT = 587
|
|
EMAIL_HOST_USER: Optional[str] = "apikey"
|
|
EMAIL_HOST_PASSWORD: Optional[str] = os.environ["TAKAHE_EMAIL_SENDGRID_KEY"]
|
|
EMAIL_USE_TLS = True
|
|
else:
|
|
EMAIL_HOST = os.environ["TAKAHE_EMAIL_HOST"]
|
|
EMAIL_PORT = int(os.environ["TAKAHE_EMAIL_PORT"])
|
|
EMAIL_HOST_USER = os.environ.get("TAKAHE_EMAIL_USER")
|
|
EMAIL_HOST_PASSWORD = os.environ.get("TAKAHE_EMAIL_PASSWORD")
|
|
EMAIL_USE_SSL = EMAIL_PORT == 465
|
|
EMAIL_USE_TLS = EMAIL_PORT == 587
|
|
|
|
AUTO_ADMIN_EMAIL = os.environ.get("TAKAHE_AUTO_ADMIN_EMAIL")
|
|
|
|
# Set up media storage
|
|
MEDIA_BACKEND = os.environ.get("TAKAHE_MEDIA_BACKEND", None)
|
|
if MEDIA_BACKEND == "local":
|
|
# Note that this MUST be a fully qualified URL in production
|
|
MEDIA_URL = os.environ.get("TAKAHE_MEDIA_URL", "/media/")
|
|
MEDIA_ROOT = os.environ.get("TAKAHE_MEDIA_ROOT", BASE_DIR / "media")
|
|
elif MEDIA_BACKEND == "gcs":
|
|
DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
|
|
GS_BUCKET_NAME = os.environ["TAKAHE_MEDIA_BUCKET"]
|
|
elif MEDIA_BACKEND == "s3":
|
|
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
|
|
AWS_STORAGE_BUCKET_NAME = os.environ["TAKAHE_MEDIA_BUCKET"]
|
|
else:
|
|
print("Unknown TAKAHE_MEDIA_BACKEND value")
|
|
sys.exit(1)
|