2021-02-28 10:56:42 +01:00
|
|
|
################################################################################
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
# Please do not modify this file, it will be reset at the next update.
|
2022-08-14 14:44:17 +02:00
|
|
|
# You can edit the file __FINALPATH__/local_settings.py and add/modify the settings you need.
|
2021-02-28 10:56:42 +01:00
|
|
|
# The parameters you add in local_settings.py will overwrite these,
|
|
|
|
# but you can use the options and documentation in this file to find out what can be done.
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
################################################################################
|
|
|
|
|
2020-12-28 12:35:36 +01:00
|
|
|
from pathlib import Path as __Path
|
2020-12-23 19:53:13 +01:00
|
|
|
|
2022-08-25 11:47:02 +02:00
|
|
|
from django_yunohost_integration.base_settings import * # noqa:F401,F403
|
2022-08-12 17:56:02 +02:00
|
|
|
from django_yunohost_integration.secret_key import get_or_create_secret as __get_or_create_secret
|
2020-12-23 19:53:13 +01:00
|
|
|
|
|
|
|
|
2022-10-06 17:32:07 +02:00
|
|
|
# https://github.com/jedie/django-example/
|
|
|
|
from django_example.settings.prod import * # noqa:F401,F403 isort:skip
|
|
|
|
|
|
|
|
|
|
|
|
from django_yunohost_integration.base_settings import LOGGING # noqa:F401 isort:skip
|
|
|
|
|
|
|
|
|
2022-08-14 17:13:32 +02:00
|
|
|
FINALPATH = __Path('__FINALPATH__') # /opt/yunohost/$app
|
2022-08-14 14:44:17 +02:00
|
|
|
assert FINALPATH.is_dir(), f'Directory not exists: {FINALPATH}'
|
2020-12-23 19:53:13 +01:00
|
|
|
|
2022-08-14 17:13:32 +02:00
|
|
|
PUBLIC_PATH = __Path('__PUBLIC_PATH__') # /var/www/$app
|
|
|
|
assert PUBLIC_PATH.is_dir(), f'Directory not exists: {PUBLIC_PATH}'
|
|
|
|
|
2021-02-28 10:56:42 +01:00
|
|
|
LOG_FILE = __Path('__LOG_FILE__') # /var/log/$app/django_example_ynh.log
|
2020-12-23 19:53:13 +01:00
|
|
|
assert LOG_FILE.is_file(), f'File not exists: {LOG_FILE}'
|
|
|
|
|
|
|
|
PATH_URL = '__PATH_URL__' # $YNH_APP_ARG_PATH
|
|
|
|
PATH_URL = PATH_URL.strip('/')
|
|
|
|
|
2022-10-07 08:30:35 +02:00
|
|
|
YNH_CURRENT_HOST = '__YNH_CURRENT_HOST__' # YunoHost main domain from: /etc/yunohost/current_host
|
|
|
|
|
2022-08-15 09:01:53 +02:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# config_panel.toml settings:
|
|
|
|
|
|
|
|
DEBUG_ENABLED = '__DEBUG_ENABLED__'
|
2022-08-24 10:16:12 +02:00
|
|
|
DEBUG = bool(int(DEBUG_ENABLED))
|
|
|
|
|
2022-08-15 09:01:53 +02:00
|
|
|
LOG_LEVEL = '__LOG_LEVEL__'
|
2022-08-15 09:17:30 +02:00
|
|
|
ADMIN_EMAIL = '__ADMIN_EMAIL__'
|
2022-08-15 09:46:03 +02:00
|
|
|
DEFAULT_FROM_EMAIL = '__DEFAULT_FROM_EMAIL__'
|
|
|
|
|
2022-08-15 09:01:53 +02:00
|
|
|
|
2020-12-23 19:53:13 +01:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
2020-12-29 15:04:36 +01:00
|
|
|
# Function that will be called to finalize a user profile:
|
2021-02-28 10:56:42 +01:00
|
|
|
YNH_SETUP_USER = 'setup_user.setup_project_user'
|
2020-12-28 18:52:29 +01:00
|
|
|
|
2022-08-14 14:44:17 +02:00
|
|
|
SECRET_KEY = __get_or_create_secret(FINALPATH / 'secret.txt') # /opt/yunohost/$app/secret.txt
|
2020-12-23 19:53:13 +01:00
|
|
|
|
2022-10-06 17:32:07 +02:00
|
|
|
INSTALLED_APPS += [
|
|
|
|
'axes', # https://github.com/jazzband/django-axes
|
|
|
|
'django_yunohost_integration.apps.YunohostIntegrationConfig',
|
|
|
|
]
|
2021-02-28 10:56:42 +01:00
|
|
|
|
2022-09-19 08:34:57 +02:00
|
|
|
MIDDLEWARE.insert(
|
|
|
|
MIDDLEWARE.index('django.contrib.auth.middleware.AuthenticationMiddleware') + 1,
|
|
|
|
# login a user via HTTP_REMOTE_USER header from SSOwat:
|
|
|
|
'django_yunohost_integration.sso_auth.auth_middleware.SSOwatRemoteUserMiddleware',
|
|
|
|
)
|
2022-10-06 17:32:07 +02:00
|
|
|
# AxesMiddleware should be the last middleware:
|
|
|
|
MIDDLEWARE.append('axes.middleware.AxesMiddleware')
|
2022-09-19 08:34:57 +02:00
|
|
|
|
|
|
|
# Keep ModelBackend around for per-user permissions and superuser
|
|
|
|
AUTHENTICATION_BACKENDS = (
|
|
|
|
'axes.backends.AxesBackend', # AxesBackend should be the first backend!
|
|
|
|
#
|
|
|
|
# Authenticate via SSO and nginx 'HTTP_REMOTE_USER' header:
|
|
|
|
'django_yunohost_integration.sso_auth.auth_backend.SSOwatUserBackend',
|
|
|
|
#
|
|
|
|
# Fallback to normal Django model backend:
|
|
|
|
'django.contrib.auth.backends.ModelBackend',
|
|
|
|
)
|
|
|
|
|
|
|
|
LOGIN_REDIRECT_URL = None
|
|
|
|
LOGIN_URL = '/yunohost/sso/'
|
|
|
|
LOGOUT_REDIRECT_URL = '/yunohost/sso/'
|
|
|
|
# /yunohost/sso/?action=logout
|
|
|
|
|
|
|
|
ROOT_URLCONF = 'urls' # .../conf/urls.py
|
|
|
|
|
2021-02-28 10:56:42 +01:00
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
2022-08-15 09:17:30 +02:00
|
|
|
ADMINS = (('__ADMIN__', ADMIN_EMAIL),)
|
2020-12-23 19:53:13 +01:00
|
|
|
|
|
|
|
MANAGERS = ADMINS
|
|
|
|
|
|
|
|
DATABASES = {
|
|
|
|
'default': {
|
|
|
|
'ENGINE': 'django.db.backends.postgresql',
|
2022-04-02 20:12:05 +02:00
|
|
|
'NAME': '__DB_NAME__',
|
|
|
|
'USER': '__DB_USER__',
|
2020-12-23 19:53:13 +01:00
|
|
|
'PASSWORD': '__DB_PWD__',
|
|
|
|
'HOST': '127.0.0.1',
|
|
|
|
'PORT': '5432', # Default Postgres Port
|
|
|
|
'CONN_MAX_AGE': 600,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Title of site to use
|
|
|
|
SITE_TITLE = '__APP__'
|
|
|
|
|
|
|
|
# Site domain
|
|
|
|
SITE_DOMAIN = '__DOMAIN__'
|
|
|
|
|
|
|
|
# Subject of emails includes site title
|
|
|
|
EMAIL_SUBJECT_PREFIX = f'[{SITE_TITLE}] '
|
|
|
|
|
|
|
|
|
|
|
|
# E-mail address that error messages come from.
|
2022-08-24 10:16:12 +02:00
|
|
|
SERVER_EMAIL = ADMIN_EMAIL
|
2020-12-23 19:53:13 +01:00
|
|
|
|
|
|
|
# Default email address to use for various automated correspondence from
|
|
|
|
# the site managers. Used for registration emails.
|
|
|
|
|
|
|
|
# List of URLs your site is supposed to serve
|
|
|
|
ALLOWED_HOSTS = ['__DOMAIN__']
|
|
|
|
|
|
|
|
# _____________________________________________________________________________
|
|
|
|
# Configuration for caching
|
|
|
|
CACHES = {
|
|
|
|
'default': {
|
|
|
|
'BACKEND': 'django_redis.cache.RedisCache',
|
|
|
|
'LOCATION': 'redis://127.0.0.1:6379/__REDIS_DB__',
|
2021-02-28 10:56:42 +01:00
|
|
|
# If redis is running on same host as PyInventory, you might
|
2020-12-23 19:53:13 +01:00
|
|
|
# want to use unix sockets instead:
|
|
|
|
# 'LOCATION': 'unix:///var/run/redis/redis.sock?db=1',
|
|
|
|
'OPTIONS': {
|
|
|
|
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
|
|
|
|
},
|
|
|
|
'KEY_PREFIX': '__APP__',
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
# _____________________________________________________________________________
|
|
|
|
# Static files (CSS, JavaScript, Images)
|
|
|
|
|
|
|
|
if PATH_URL:
|
|
|
|
STATIC_URL = f'/{PATH_URL}/static/'
|
|
|
|
MEDIA_URL = f'/{PATH_URL}/media/'
|
|
|
|
else:
|
|
|
|
# Installed to domain root, without a path prefix?
|
|
|
|
STATIC_URL = '/static/'
|
|
|
|
MEDIA_URL = '/media/'
|
|
|
|
|
2022-08-14 17:13:32 +02:00
|
|
|
STATIC_ROOT = str(PUBLIC_PATH / 'static')
|
|
|
|
MEDIA_ROOT = str(PUBLIC_PATH / 'media')
|
2021-02-28 10:56:42 +01:00
|
|
|
|
2022-08-15 09:01:53 +02:00
|
|
|
|
2021-02-28 10:56:42 +01:00
|
|
|
# -----------------------------------------------------------------------------
|
2020-12-28 12:35:36 +01:00
|
|
|
|
2022-08-25 11:47:02 +02:00
|
|
|
# Set log file to e.g.: /var/log/$app/$app.log
|
|
|
|
LOGGING['handlers']['log_file']['filename'] = str(LOG_FILE)
|
|
|
|
|
|
|
|
# Example how to add logging to own app:
|
2022-10-06 17:32:07 +02:00
|
|
|
LOGGING['loggers']['django_example'] = {
|
2022-08-25 11:47:02 +02:00
|
|
|
'handlers': ['syslog', 'log_file', 'mail_admins'],
|
|
|
|
'level': 'INFO',
|
|
|
|
'propagate': False,
|
2020-12-23 19:53:13 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
try:
|
2022-08-25 11:47:02 +02:00
|
|
|
from local_settings import * # noqa:F401,F403
|
2020-12-23 19:53:13 +01:00
|
|
|
except ImportError:
|
|
|
|
pass
|