""" Django settings for khaganat project. Generated by 'django-admin startproject' using Django 2.0.1. For more information on this file, see https://docs.djangoproject.com/en/2.0/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/2.0/ref/settings/ """ from django.utils.translation import gettext_lazy as _ from django.urls import reverse_lazy from decouple import config, Csv import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = config("KHAGANAT_SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! DEBUG = config("KHAGANAT_DEBUG", default=False, cast=bool) ALLOWED_HOSTS = config("KHAGANAT_HOSTNAMES", default="", cast=Csv()) INTERNAL_IPS = config("KHAGANAT_INTERNAL_IPS", default="127.0.0.1,::1", cast=Csv()) # Application definition INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.staticfiles", "django.contrib.messages", "filebrowser", "tinymce", "chat.apps.LogsConfig", "khaganat.apps.KhaganatConfig", "navbar.apps.NavbarConfig", "neluser.apps.NeluserConfig", "npb.apps.NpbConfig", "nsfw.apps.NsfwConfig", "pages.apps.PagesConfig", "pwdb.apps.PwdbConfig", ] MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.locale.LocaleMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", ] ROOT_URLCONF = "khaganat.urls" TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [], "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 = "khaganat.wsgi.application" # Database # https://docs.djangoproject.com/en/2.0/ref/settings/#databases DATABASES = { "default": { "ENGINE": "django.db.backends.sqlite3", "NAME": os.path.join(BASE_DIR, "db.sqlite3"), } } # Emailing # https://docs.djangoproject.com/fr/2.0/topics/email/ EMAIL_HOST = config("KHAGANAT_EMAIL_HOST", default="localhost") EMAIL_PORT = config("KHAGANAT_EMAIL_PORT", default=25, cast=int) EMAIL_HOST_USER = config("KHAGANAT_EMAIL_HOST_USER", default="") EMAIL_HOST_PASSWORD = config("KHAGANAT_EMAIL_HOST_PASSWORD", default="") EMAIL_USE_TLS = config("KHAGANAT_EMAIL_USE_STARTTLS", default=False, cast=bool) EMAIL_USE_SSL = config("KHAGANAT_EMAIL_USE_TLS", default=False, cast=bool) EMAIL_SUBJECT_PREFIX = config("KHAGANAT_EMAIL_SUBJECT_PREFIX", default="") DEFAULT_FROM_EMAIL = config("KHAGANAT_DEFAULT_FROM_EMAIL", default="no-reply@localhost") # User model # https://docs.djangoproject.com/en/2.0/topics/auth/customizing/ AUTH_USER_MODEL = "neluser.NelUser" LOGIN_URL = reverse_lazy("login") LOGIN_REDIRECT_URL = reverse_lazy( config("KHAGANAT_LOGIN_REDIRECT_URL", default="index") ) REGISTER_REQUIRE_VALIDATION = config( "KHAGANAT_REGISTER_REQUIRE_VALIDATION", default=True, cast=bool ) # Password validation # https://docs.djangoproject.com/en/2.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/2.0/topics/i18n/ LANGUAGE_CODE = config("KHAGANAT_LANGUAGE_CODE", default="fr") # https://github.com/django/django/blob/master/django/conf/global_settings.py LANGUAGES = [ ("en", _("English")), ("fr", _("French")), # ("ko", _("Korean")), # ("ru", _("Russian")), ] TIME_ZONE = config("KHAGANAT_TIME_ZONE", default="Europe/Paris") USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.0/howto/static-files/ STATIC_URL = config("KHAGANAT_STATIC_URL", default="/static/") STATIC_ROOT = config("KHAGANAT_STATIC_ROOT", default="") or None MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media") FILEBROWSER_DIRECTORY = "uploads/" FILEBROWSER_VERSIONS_BASEDIR = "_version/" # Logs configuration KHAGANAT_LOGS_MIN_DAYS = config("KHAGANAT_LOGS_MIN_DAYS", default=0, cast=int) KHAGANAT_LOGS_MAX_DAYS = config("KHAGANAT_LOGS_MAX_DAYS", default=7, cast=int) # TLS # https://docs.djangoproject.com/fr/2.0/ref/settings/#std:setting-SECURE_PROXY_SSL_HEADER if config("KHAGANAT_FORCE_HTTPS", default=False, cast=bool): SECURE_PROXY_SSL_HEADER = ( config("KHAGANAT_HTTPS_HEADER_NAME", default="HTTP_X_FORWARDED_PROTO"), config("KHAGANAT_HTTPS_HEADER_VALUE", default="https"), ) # NSFW KHAGANAT_NSFW_TAGS = config("KHAGANAT_NSFW_TAGS", default="\\#nsfw", cast=Csv()) KHAGANAT_NSFW_NAME = config("KHAGANAT_NSFW_NAME", default="nsfw_allowed") KHAGANAT_NSFW_OK = ("y", "yes", "t", "true", "1") # Converse.js KHAGANAT_XMPP_BOSH_URL = config("KHAGANAT_XMPP_BOSH_URL", default="") or None KHAGANAT_XMPP_JID = config("KHAGANAT_XMPP_JID", default="") or None KHAGANAT_XMPP_ROOMS = config("KHAGANAT_XMPP_ROOMS", default="", cast=Csv()) or [] KHAGANAT_XMPP_WEBSOCKET_URL = config("KHAGANAT_XMPP_WEBSOCKET_URL", default="") or None