228 lines
7.9 KiB
Python
228 lines
7.9 KiB
Python
"""
|
|
Django settings for Fournée project.
|
|
|
|
For more information on this file, see
|
|
https://docs.djangoproject.com/en/stable/topics/settings/
|
|
|
|
For the full list of settings and their values, see
|
|
https://docs.djangoproject.com/en/stable/ref/settings/
|
|
"""
|
|
|
|
import os.path
|
|
from email.utils import getaddresses
|
|
from urllib.parse import urlparse
|
|
|
|
from . import base_dir, env, root_dir
|
|
|
|
# ENVIRONMENT VARIABLES AND PATHS
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Local directory used for static and templates overrides
|
|
local_dir = base_dir.path("local")
|
|
|
|
# Directory for variable stuffs, i.e. user-uploaded media
|
|
var_dir = base_dir.path("var")
|
|
if not os.path.isdir(var_dir()):
|
|
os.mkdir(var_dir(), mode=0o755)
|
|
|
|
# Base URL on which the application is served without trailing slash
|
|
BASE_URL = env("BASE_URL", default="http://127.0.0.1:8000")
|
|
|
|
# Location on which the application is served
|
|
APP_PATH = urlparse(BASE_URL).path or "/"
|
|
|
|
# GENERAL
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#debug
|
|
DEBUG = env.bool("DJANGO_DEBUG", default=True)
|
|
|
|
# Local time zone for this installation
|
|
TIME_ZONE = "Europe/Paris"
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#language-code
|
|
LANGUAGE_CODE = "fr"
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#site-id
|
|
SITE_ID = 1
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#use-tz
|
|
USE_TZ = True
|
|
|
|
# DATABASES
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#databases
|
|
# https://django-environ.readthedocs.io/en/stable/#supported-types
|
|
DATABASES = {
|
|
"default": env.db(
|
|
"DJANGO_DATABASE_URL",
|
|
default="sqlite:///{}".format(base_dir("sqlite.db")),
|
|
)
|
|
}
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#default-auto-field
|
|
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
|
|
|
|
# URLS
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#root-urlconf
|
|
ROOT_URLCONF = "fournée.urls"
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#wsgi-application
|
|
WSGI_APPLICATION = "fournée.wsgi.application"
|
|
|
|
# APP CONFIGURATION
|
|
# ------------------------------------------------------------------------------
|
|
DJANGO_APPS = [
|
|
"django.contrib.admin",
|
|
"django.contrib.auth",
|
|
"django.contrib.contenttypes",
|
|
"django.contrib.sessions",
|
|
"django.contrib.messages",
|
|
"django.contrib.staticfiles",
|
|
]
|
|
|
|
# Project dependencies
|
|
THIRD_PARTY_APPS = ["nested_admin"]
|
|
|
|
# Project applications
|
|
LOCAL_APPS = ["fournée.core"]
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#installed-apps
|
|
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
|
|
|
|
# PASSWORDS
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/topics/auth/passwords/#password-validation
|
|
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"
|
|
)
|
|
},
|
|
]
|
|
|
|
# MIDDLEWARE
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#middleware
|
|
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",
|
|
]
|
|
|
|
# STATIC
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#static-files
|
|
STATIC_ROOT = var_dir("static")
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#static-url
|
|
STATIC_URL = os.path.join(APP_PATH, "static/")
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#staticfiles-dirs
|
|
STATICFILES_DIRS = [root_dir("static")]
|
|
if os.path.isdir(local_dir("static")):
|
|
STATICFILES_DIRS.insert(0, local_dir("static"))
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/contrib/staticfiles/#staticfiles-finders
|
|
STATICFILES_FINDERS = [
|
|
"django.contrib.staticfiles.finders.FileSystemFinder",
|
|
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
|
|
]
|
|
|
|
# MEDIA
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#media-root
|
|
MEDIA_ROOT = var_dir("media")
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#media-url
|
|
MEDIA_URL = os.path.join(APP_PATH, "media/")
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#file-upload-directory-permissions
|
|
FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o755
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#file-upload-permissions
|
|
FILE_UPLOAD_PERMISSIONS = 0o644
|
|
|
|
# TEMPLATES
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#templates
|
|
TEMPLATES = [
|
|
{
|
|
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
|
"DIRS": [root_dir("templates")],
|
|
"OPTIONS": {
|
|
"debug": DEBUG,
|
|
"loaders": [
|
|
"django.template.loaders.filesystem.Loader",
|
|
"django.template.loaders.app_directories.Loader",
|
|
],
|
|
"context_processors": [
|
|
"django.template.context_processors.debug",
|
|
"django.template.context_processors.request",
|
|
"django.contrib.auth.context_processors.auth",
|
|
"django.template.context_processors.media",
|
|
"django.template.context_processors.static",
|
|
"django.template.context_processors.tz",
|
|
"django.contrib.messages.context_processors.messages",
|
|
],
|
|
},
|
|
}
|
|
]
|
|
if os.path.isdir(local_dir("templates")):
|
|
TEMPLATES[0]["DIRS"].insert(0, local_dir("templates"))
|
|
|
|
# FIXTURES
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#fixture-dirs
|
|
FIXTURE_DIRS = [root_dir("fixtures")]
|
|
|
|
# EMAIL
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/topics/email/#email-backends
|
|
# https://django-environ.readthedocs.io/en/stable/#supported-types
|
|
vars().update(env.email_url("DJANGO_EMAIL_URL", default="smtp://localhost:25"))
|
|
|
|
DEFAULT_FROM_EMAIL = env("DEFAULT_FROM_EMAIL", default="webmaster@localhost")
|
|
|
|
# Use the same email address for error messages
|
|
SERVER_EMAIL = DEFAULT_FROM_EMAIL
|
|
|
|
# ADMIN
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#admins
|
|
ADMINS = getaddresses([env("ADMINS", default="Cliss XXI <tech@cliss21.com>")])
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#managers
|
|
MANAGERS = ADMINS
|
|
|
|
# SESSIONS AND COOKIES
|
|
# ------------------------------------------------------------------------------
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#session-cookie-path
|
|
SESSION_COOKIE_PATH = APP_PATH
|
|
|
|
# https://docs.djangoproject.com/en/stable/ref/settings/#csrf-cookie-path
|
|
CSRF_COOKIE_PATH = APP_PATH
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# APPLICATION AND 3RD PARTY LIBRARY SETTINGS
|
|
# ------------------------------------------------------------------------------
|