Rename settings.py -> settings.example.py
When a new deployment is created, or when new settings are added, we want to avoid overwriting settings that may already be present. So we use the settings.example.py file for default settings and settings.py for deployment settings instead. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
189
threadchat/settings.example.py
Normal file
189
threadchat/settings.example.py
Normal file
@@ -0,0 +1,189 @@
|
||||
"""
|
||||
Django settings for threadchat project.
|
||||
|
||||
Generated by 'django-admin startproject' using Django 4.0.4.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/4.0/topics/settings/
|
||||
|
||||
For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/4.0/ref/settings/
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Sequence
|
||||
import environ
|
||||
|
||||
env = environ.Env()
|
||||
environ.Env.read_env()
|
||||
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = env("SECRET_KEY")
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
with open("ALLOWED_HOSTS") as fp:
|
||||
ALLOWED_HOSTS: Sequence[str] = list(filter(len, map(str.strip, fp)))
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
"django.contrib.admin",
|
||||
"django.contrib.auth",
|
||||
"django.contrib.contenttypes",
|
||||
"django.contrib.sessions",
|
||||
"django.contrib.messages",
|
||||
"django.contrib.staticfiles",
|
||||
"django_minify_html",
|
||||
"guardian",
|
||||
"colorfield",
|
||||
"board",
|
||||
]
|
||||
|
||||
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_minify_html.middleware.MinifyHtmlMiddleware",
|
||||
]
|
||||
|
||||
ROOT_URLCONF = "threadchat.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",
|
||||
"board.context_processors.settings",
|
||||
"board.context_processors.boards",
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = "threadchat.wsgi.application"
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
"django.contrib.auth.backends.ModelBackend",
|
||||
"guardian.backends.ObjectPermissionBackend",
|
||||
)
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
"default": {
|
||||
"ENGINE": "django.db.backends.sqlite3",
|
||||
"NAME": BASE_DIR / "db.sqlite3",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/4.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/4.0/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = "en-us"
|
||||
|
||||
TIME_ZONE = "US/Pacific"
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
GUARDIAN_RENDER_403 = True
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/4.0/howto/static-files/
|
||||
|
||||
STATIC_URL = "static/"
|
||||
|
||||
# Default primary key field type
|
||||
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
|
||||
|
||||
# X-Frame-Options header from XFrameOptionsMiddleware
|
||||
X_FRAME_OPTIONS = "SAMEORIGIN"
|
||||
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
# Site name
|
||||
SITE_NAME = "interchan"
|
||||
|
||||
# Media root - where media files are stored on the disk
|
||||
MEDIA_ROOT = "media/"
|
||||
|
||||
# Media URL - the URL where media is served from
|
||||
MEDIA_URL = "media/"
|
||||
|
||||
# Thumbnail size in pixels.
|
||||
THUMB_SIZE = (200, 200)
|
||||
|
||||
# Max upload size in bytes.
|
||||
MAX_UPLOAD_SIZE = 25 * 1024**2
|
||||
|
||||
# Whether to use HCAPTCHA or not.
|
||||
USE_HCAPTCHA = False
|
||||
|
||||
if USE_HCAPTCHA:
|
||||
INSTALLED_APPS += ["hcaptcha"]
|
||||
HCAPTCHA_SITEKEY = env("HCAPTCHA_SITEKEY")
|
||||
HCAPTCHA_SECRET = env("HCAPTCHA_SECRET")
|
||||
|
||||
# How many seconds to wait before closing the report window after a report is
|
||||
# created.
|
||||
# By default, wait 3 seconds. This should give users plenty of time to read it.
|
||||
REPORT_WINDOW_CLOSE_TIMEOUT = 3
|
||||
|
||||
# How many seconds to wait before closing the ban window after a ban is created.
|
||||
# By default, wait 0 seconds and close immediately. It is assumed that the ban
|
||||
# is created successfully, and if an error occurs, the window won't close anyway.
|
||||
ACTION_SUCCESS_CLOSE_TIMEOUT = 0
|
||||
|
||||
# How many seconds to wait before closing the new post window after a post is
|
||||
# created.
|
||||
# By default, wait 0 seconds. If there is an error, the window won't close
|
||||
# because it will be redirected elsewhere.
|
||||
POST_WINDOW_CLOSE_TIMEOUT = 0
|
||||
|
||||
# This is the length of a user's token, which is held in a server-side session.
|
||||
# This token is used to identify a user's individual web client, outside of IP
|
||||
# address. You probably don't need to change this.
|
||||
# It should be at most 30, and probably at least 10.
|
||||
USER_TOKEN_LENGTH = 30
|
||||
Reference in New Issue
Block a user