""" 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 ")]) # 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 # ------------------------------------------------------------------------------