mirror of
https://github.com/wger-project/wger.git
synced 2026-02-17 16:07:53 +01:00
Automatic linting
This commit is contained in:
@@ -7,6 +7,7 @@ import sys
|
||||
# Django
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.main")
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.main')
|
||||
execute_from_command_line(sys.argv)
|
||||
|
||||
@@ -27,11 +27,11 @@ DEBUG = True
|
||||
|
||||
# Application settings
|
||||
WGER_SETTINGS['EMAIL_FROM'] = 'wger Workout Manager <wger@example.com>'
|
||||
WGER_SETTINGS["ALLOW_REGISTRATION"] = True
|
||||
WGER_SETTINGS["ALLOW_GUEST_USERS"] = True
|
||||
WGER_SETTINGS["ALLOW_UPLOAD_VIDEOS"] = False
|
||||
WGER_SETTINGS["MIN_ACCOUNT_AGE_TO_TRUST"] = 21 # in days
|
||||
WGER_SETTINGS["EXERCISE_CACHE_TTL"] = 3600 # in seconds
|
||||
WGER_SETTINGS['ALLOW_REGISTRATION'] = True
|
||||
WGER_SETTINGS['ALLOW_GUEST_USERS'] = True
|
||||
WGER_SETTINGS['ALLOW_UPLOAD_VIDEOS'] = False
|
||||
WGER_SETTINGS['MIN_ACCOUNT_AGE_TO_TRUST'] = 21 # in days
|
||||
WGER_SETTINGS['EXERCISE_CACHE_TTL'] = 3600 # in seconds
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
@@ -70,7 +70,7 @@ SITE_URL = 'http://localhost:8000'
|
||||
|
||||
# Path to uploaded files
|
||||
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||
MEDIA_ROOT = env.str("DJANGO_MEDIA_ROOT", '/tmp/')
|
||||
MEDIA_ROOT = env.str('DJANGO_MEDIA_ROOT', '/tmp/')
|
||||
MEDIA_URL = '/media/'
|
||||
|
||||
# Allow all hosts to access the application.
|
||||
|
||||
@@ -16,7 +16,9 @@ MANAGERS = ADMINS
|
||||
SECRET_KEY = 'wger-local-development-supersecret-key-1234567890!'
|
||||
|
||||
# Allow all hosts to access the application.
|
||||
ALLOWED_HOSTS = ['*', ]
|
||||
ALLOWED_HOSTS = [
|
||||
'*',
|
||||
]
|
||||
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
|
||||
@@ -24,7 +26,7 @@ EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
WGER_SETTINGS['ALLOW_UPLOAD_VIDEOS'] = True
|
||||
WGER_SETTINGS['ALLOW_GUEST_USERS'] = True
|
||||
WGER_SETTINGS['ALLOW_REGISTRATION'] = True
|
||||
WGER_SETTINGS['DOWNLOAD_INGREDIENTS_FROM'] = 'WGER' # or 'None' to disable
|
||||
WGER_SETTINGS['DOWNLOAD_INGREDIENTS_FROM'] = 'WGER' # or 'None' to disable
|
||||
WGER_SETTINGS['EMAIL_FROM'] = 'wger Workout Manager <wger@example.com>'
|
||||
WGER_SETTINGS['EXERCISE_CACHE_TTL'] = 500
|
||||
WGER_SETTINGS['INGREDIENT_CACHE_TTL'] = 500
|
||||
@@ -52,8 +54,8 @@ AXES_ENABLED = False
|
||||
|
||||
# Does not really cache anything
|
||||
CACHES_DUMMY = {
|
||||
"default": {
|
||||
"BACKEND": "django.core.cache.backends.dummy.DummyCache",
|
||||
'default': {
|
||||
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
|
||||
'TIMEOUT': 100,
|
||||
}
|
||||
}
|
||||
@@ -73,9 +75,7 @@ CACHE_REDIS = {
|
||||
'BACKEND': 'django_redis.cache.RedisCache',
|
||||
'LOCATION': 'redis://localhost:6379/1',
|
||||
'TIMEOUT': 5000,
|
||||
'OPTIONS': {
|
||||
'CLIENT_CLASS': 'django_redis.client.DefaultClient'
|
||||
}
|
||||
'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ DBCONFIG_PG = {
|
||||
|
||||
DBCONFIG_SQLITE = {
|
||||
'ENGINE': 'django_prometheus.db.backends.sqlite3',
|
||||
'NAME': BASE_DIR.parent / 'db' / 'database.sqlite',
|
||||
'NAME': BASE_DIR.parent / 'db' / 'database.sqlite',
|
||||
}
|
||||
|
||||
DATABASES = {
|
||||
|
||||
150
settings/main.py
150
settings/main.py
@@ -33,21 +33,23 @@ env = environ.Env(
|
||||
)
|
||||
|
||||
# Use 'DEBUG = True' to get more details for server errors
|
||||
DEBUG = env("DJANGO_DEBUG")
|
||||
DEBUG = env('DJANGO_DEBUG')
|
||||
|
||||
if os.environ.get('DJANGO_ADMINS'):
|
||||
ADMINS = [env.tuple('DJANGO_ADMINS'), ]
|
||||
ADMINS = [
|
||||
env.tuple('DJANGO_ADMINS'),
|
||||
]
|
||||
MANAGERS = ADMINS
|
||||
|
||||
if os.environ.get("DJANGO_DB_ENGINE"):
|
||||
if os.environ.get('DJANGO_DB_ENGINE'):
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': env.str("DJANGO_DB_ENGINE"),
|
||||
'NAME': env.str("DJANGO_DB_DATABASE"),
|
||||
'USER': env.str("DJANGO_DB_USER"),
|
||||
'PASSWORD': env.str("DJANGO_DB_PASSWORD"),
|
||||
'HOST': env.str("DJANGO_DB_HOST"),
|
||||
'PORT': env.int("DJANGO_DB_PORT"),
|
||||
'ENGINE': env.str('DJANGO_DB_ENGINE'),
|
||||
'NAME': env.str('DJANGO_DB_DATABASE'),
|
||||
'USER': env.str('DJANGO_DB_USER'),
|
||||
'PASSWORD': env.str('DJANGO_DB_PASSWORD'),
|
||||
'HOST': env.str('DJANGO_DB_HOST'),
|
||||
'PORT': env.int('DJANGO_DB_PORT'),
|
||||
}
|
||||
}
|
||||
else:
|
||||
@@ -59,11 +61,11 @@ else:
|
||||
}
|
||||
|
||||
# Timezone for this installation. Consult settings_global.py for more information
|
||||
TIME_ZONE = env.str("TIME_ZONE", 'Europe/Berlin')
|
||||
TIME_ZONE = env.str('TIME_ZONE', 'Europe/Berlin')
|
||||
|
||||
# Make this unique, and don't share it with anybody.
|
||||
# Generate e.g. with: python -c "import secrets; print(secrets.token_urlsafe(50))" or https://djecrety.ir/
|
||||
SECRET_KEY = env.str("SECRET_KEY", 'wger-docker-supersecret-key-1234567890!@#$%^&*(-_)')
|
||||
SECRET_KEY = env.str('SECRET_KEY', 'wger-docker-supersecret-key-1234567890!@#$%^&*(-_)')
|
||||
|
||||
# Your reCaptcha keys
|
||||
RECAPTCHA_PUBLIC_KEY = env.str('RECAPTCHA_PUBLIC_KEY', '')
|
||||
@@ -76,8 +78,8 @@ SITE_URL = env.str('SITE_URL', 'http://localhost:8000')
|
||||
|
||||
# Path to uploaded files
|
||||
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||
MEDIA_ROOT = env.str("DJANGO_MEDIA_ROOT", '/home/wger/media')
|
||||
STATIC_ROOT = env.str("DJANGO_STATIC_ROOT", '/home/wger/static')
|
||||
MEDIA_ROOT = env.str('DJANGO_MEDIA_ROOT', '/home/wger/media')
|
||||
STATIC_ROOT = env.str('DJANGO_STATIC_ROOT', '/home/wger/static')
|
||||
|
||||
# If you change these, adjust nginx alias definitions as well
|
||||
MEDIA_URL = env.str('MEDIA_URL', '/media/')
|
||||
@@ -86,66 +88,68 @@ STATIC_URL = env.str('STATIC_URL', '/static/')
|
||||
LOGIN_REDIRECT_URL = env.str('LOGIN_REDIRECT_URL', '/')
|
||||
|
||||
# Allow all hosts to access the application. Change if used in production.
|
||||
ALLOWED_HOSTS = ['*', ]
|
||||
ALLOWED_HOSTS = [
|
||||
'*',
|
||||
]
|
||||
|
||||
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
|
||||
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
|
||||
|
||||
# Configure a real backend in production
|
||||
if DEBUG:
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
|
||||
|
||||
if env.bool("ENABLE_EMAIL", False):
|
||||
if env.bool('ENABLE_EMAIL', False):
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = env.str("EMAIL_HOST")
|
||||
EMAIL_PORT = env.int("EMAIL_PORT")
|
||||
EMAIL_HOST_USER = env.str("EMAIL_HOST_USER")
|
||||
EMAIL_HOST_PASSWORD = env.str("EMAIL_HOST_PASSWORD")
|
||||
EMAIL_USE_TLS = env.bool("EMAIL_USE_TLS", True)
|
||||
EMAIL_USE_SSL = env.bool("EMAIL_USE_SSL", False)
|
||||
EMAIL_HOST = env.str('EMAIL_HOST')
|
||||
EMAIL_PORT = env.int('EMAIL_PORT')
|
||||
EMAIL_HOST_USER = env.str('EMAIL_HOST_USER')
|
||||
EMAIL_HOST_PASSWORD = env.str('EMAIL_HOST_PASSWORD')
|
||||
EMAIL_USE_TLS = env.bool('EMAIL_USE_TLS', True)
|
||||
EMAIL_USE_SSL = env.bool('EMAIL_USE_SSL', False)
|
||||
EMAIL_TIMEOUT = 60
|
||||
|
||||
# Sender address used for sent emails
|
||||
DEFAULT_FROM_EMAIL = env.str("FROM_EMAIL", "wger Workout Manager <wger@example.com>")
|
||||
DEFAULT_FROM_EMAIL = env.str('FROM_EMAIL', 'wger Workout Manager <wger@example.com>')
|
||||
WGER_SETTINGS['EMAIL_FROM'] = DEFAULT_FROM_EMAIL
|
||||
SERVER_EMAIL = DEFAULT_FROM_EMAIL
|
||||
EMAIL_FROM_ADDRESS = DEFAULT_FROM_EMAIL
|
||||
|
||||
# Management
|
||||
WGER_SETTINGS["ALLOW_GUEST_USERS"] = env.bool("ALLOW_GUEST_USERS", True)
|
||||
WGER_SETTINGS["ALLOW_REGISTRATION"] = env.bool("ALLOW_REGISTRATION", True)
|
||||
WGER_SETTINGS["ALLOW_UPLOAD_VIDEOS"] = env.bool("ALLOW_UPLOAD_VIDEOS", True)
|
||||
WGER_SETTINGS["DOWNLOAD_INGREDIENTS_FROM"] = env.str("DOWNLOAD_INGREDIENTS_FROM", "WGER")
|
||||
WGER_SETTINGS["EXERCISE_CACHE_TTL"] = env.int("EXERCISE_CACHE_TTL", 3600)
|
||||
WGER_SETTINGS["MIN_ACCOUNT_AGE_TO_TRUST"] = env.int("MIN_ACCOUNT_AGE_TO_TRUST", 21) # in days
|
||||
WGER_SETTINGS["SYNC_EXERCISES_CELERY"] = env.bool("SYNC_EXERCISES_CELERY", False)
|
||||
WGER_SETTINGS["SYNC_EXERCISE_IMAGES_CELERY"] = env.bool("SYNC_EXERCISE_IMAGES_CELERY", False)
|
||||
WGER_SETTINGS["SYNC_EXERCISE_VIDEOS_CELERY"] = env.bool("SYNC_EXERCISE_VIDEOS_CELERY", False)
|
||||
WGER_SETTINGS["SYNC_INGREDIENTS_CELERY"] = env.bool("SYNC_INGREDIENTS_CELERY", False)
|
||||
WGER_SETTINGS["SYNC_OFF_DAILY_DELTA_CELERY"] = env.bool("SYNC_OFF_DAILY_DELTA_CELERY", False)
|
||||
WGER_SETTINGS["USE_RECAPTCHA"] = env.bool("USE_RECAPTCHA", False)
|
||||
WGER_SETTINGS["USE_CELERY"] = env.bool("USE_CELERY", False)
|
||||
WGER_SETTINGS["CACHE_API_EXERCISES_CELERY"] = env.bool("CACHE_API_EXERCISES_CELERY", False)
|
||||
WGER_SETTINGS["CACHE_API_EXERCISES_CELERY_FORCE_UPDATE"] = env.bool("CACHE_API_EXERCISES_CELERY_FORCE_UPDATE", False)
|
||||
WGER_SETTINGS['ALLOW_GUEST_USERS'] = env.bool('ALLOW_GUEST_USERS', True)
|
||||
WGER_SETTINGS['ALLOW_REGISTRATION'] = env.bool('ALLOW_REGISTRATION', True)
|
||||
WGER_SETTINGS['ALLOW_UPLOAD_VIDEOS'] = env.bool('ALLOW_UPLOAD_VIDEOS', True)
|
||||
WGER_SETTINGS['DOWNLOAD_INGREDIENTS_FROM'] = env.str('DOWNLOAD_INGREDIENTS_FROM', 'WGER')
|
||||
WGER_SETTINGS['EXERCISE_CACHE_TTL'] = env.int('EXERCISE_CACHE_TTL', 3600)
|
||||
WGER_SETTINGS['MIN_ACCOUNT_AGE_TO_TRUST'] = env.int('MIN_ACCOUNT_AGE_TO_TRUST', 21) # in days
|
||||
WGER_SETTINGS['SYNC_EXERCISES_CELERY'] = env.bool('SYNC_EXERCISES_CELERY', False)
|
||||
WGER_SETTINGS['SYNC_EXERCISE_IMAGES_CELERY'] = env.bool('SYNC_EXERCISE_IMAGES_CELERY', False)
|
||||
WGER_SETTINGS['SYNC_EXERCISE_VIDEOS_CELERY'] = env.bool('SYNC_EXERCISE_VIDEOS_CELERY', False)
|
||||
WGER_SETTINGS['SYNC_INGREDIENTS_CELERY'] = env.bool('SYNC_INGREDIENTS_CELERY', False)
|
||||
WGER_SETTINGS['SYNC_OFF_DAILY_DELTA_CELERY'] = env.bool('SYNC_OFF_DAILY_DELTA_CELERY', False)
|
||||
WGER_SETTINGS['USE_RECAPTCHA'] = env.bool('USE_RECAPTCHA', False)
|
||||
WGER_SETTINGS['USE_CELERY'] = env.bool('USE_CELERY', False)
|
||||
WGER_SETTINGS['CACHE_API_EXERCISES_CELERY'] = env.bool('CACHE_API_EXERCISES_CELERY', False)
|
||||
WGER_SETTINGS['CACHE_API_EXERCISES_CELERY_FORCE_UPDATE'] = env.bool(
|
||||
'CACHE_API_EXERCISES_CELERY_FORCE_UPDATE', False
|
||||
)
|
||||
|
||||
#
|
||||
# Auth Proxy Authentication
|
||||
# https://wger.readthedocs.io/en/latest/administration/auth_proxy.html
|
||||
AUTH_PROXY_HEADER = env.str("AUTH_PROXY_HEADER", '')
|
||||
AUTH_PROXY_TRUSTED_IPS = env.list("AUTH_PROXY_TRUSTED_IPS", default=[])
|
||||
AUTH_PROXY_CREATE_UNKNOWN_USER = env.bool("AUTH_PROXY_CREATE_UNKNOWN_USER", False)
|
||||
AUTH_PROXY_USER_EMAIL_HEADER = env.str("AUTH_PROXY_USER_EMAIL_HEADER", '')
|
||||
AUTH_PROXY_USER_NAME_HEADER = env.str("AUTH_PROXY_USER_NAME_HEADER", '')
|
||||
AUTH_PROXY_HEADER = env.str('AUTH_PROXY_HEADER', '')
|
||||
AUTH_PROXY_TRUSTED_IPS = env.list('AUTH_PROXY_TRUSTED_IPS', default=[])
|
||||
AUTH_PROXY_CREATE_UNKNOWN_USER = env.bool('AUTH_PROXY_CREATE_UNKNOWN_USER', False)
|
||||
AUTH_PROXY_USER_EMAIL_HEADER = env.str('AUTH_PROXY_USER_EMAIL_HEADER', '')
|
||||
AUTH_PROXY_USER_NAME_HEADER = env.str('AUTH_PROXY_USER_NAME_HEADER', '')
|
||||
|
||||
# Cache
|
||||
if os.environ.get("DJANGO_CACHE_BACKEND"):
|
||||
if os.environ.get('DJANGO_CACHE_BACKEND'):
|
||||
CACHES = {
|
||||
'default': {
|
||||
'BACKEND': env.str("DJANGO_CACHE_BACKEND"),
|
||||
'LOCATION': env.str("DJANGO_CACHE_LOCATION", ''),
|
||||
'TIMEOUT': env.int("DJANGO_CACHE_TIMEOUT", 300),
|
||||
'OPTIONS': {
|
||||
'CLIENT_CLASS': env.str("DJANGO_CACHE_CLIENT_CLASS", '')
|
||||
}
|
||||
'BACKEND': env.str('DJANGO_CACHE_BACKEND'),
|
||||
'LOCATION': env.str('DJANGO_CACHE_LOCATION', ''),
|
||||
'TIMEOUT': env.int('DJANGO_CACHE_TIMEOUT', 300),
|
||||
'OPTIONS': {'CLIENT_CLASS': env.str('DJANGO_CACHE_CLIENT_CLASS', '')},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,21 +157,22 @@ if os.environ.get("DJANGO_CACHE_BACKEND"):
|
||||
CACHES['default']['OPTIONS']['PASSWORD'] = env.str('DJANGO_CACHE_CLIENT_PASSWORD')
|
||||
|
||||
CONNECTION_POOL_KWARGS = dict()
|
||||
if "DJANGO_CACHE_CLIENT_SSL_KEYFILE" in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_keyfile'] = env.str("DJANGO_CACHE_CLIENT_SSL_KEYFILE")
|
||||
if 'DJANGO_CACHE_CLIENT_SSL_KEYFILE' in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_keyfile'] = env.str('DJANGO_CACHE_CLIENT_SSL_KEYFILE')
|
||||
|
||||
if "DJANGO_CACHE_CLIENT_SSL_CERTFILE" in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_certfile'] = env.str("DJANGO_CACHE_CLIENT_SSL_CERTFILE")
|
||||
if 'DJANGO_CACHE_CLIENT_SSL_CERTFILE' in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_certfile'] = env.str('DJANGO_CACHE_CLIENT_SSL_CERTFILE')
|
||||
|
||||
if "DJANGO_CACHE_CLIENT_SSL_CERT_REQS" in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_cert_reqs'] = env.str("DJANGO_CACHE_CLIENT_SSL_CERT_REQS")
|
||||
if 'DJANGO_CACHE_CLIENT_SSL_CERT_REQS' in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_cert_reqs'] = env.str('DJANGO_CACHE_CLIENT_SSL_CERT_REQS')
|
||||
|
||||
if "DJANGO_CACHE_CLIENT_SSL_CHECK_HOSTNAME" in os.environ:
|
||||
if 'DJANGO_CACHE_CLIENT_SSL_CHECK_HOSTNAME' in os.environ:
|
||||
CONNECTION_POOL_KWARGS['ssl_check_hostname'] = env.bool(
|
||||
"DJANGO_CACHE_CLIENT_SSL_CHECK_HOSTNAME")
|
||||
'DJANGO_CACHE_CLIENT_SSL_CHECK_HOSTNAME'
|
||||
)
|
||||
|
||||
if CONNECTION_POOL_KWARGS:
|
||||
CACHES["default"]["OPTIONS"]["CONNECTION_POOL_KWARGS"] = CONNECTION_POOL_KWARGS
|
||||
CACHES['default']['OPTIONS']['CONNECTION_POOL_KWARGS'] = CONNECTION_POOL_KWARGS
|
||||
|
||||
#
|
||||
# Django Compressor
|
||||
@@ -190,28 +195,29 @@ AXES_FAILURE_LIMIT = env.int('AXES_FAILURE_LIMIT', 10)
|
||||
AXES_COOLOFF_TIME = timedelta(minutes=env.float('AXES_COOLOFF_TIME', 30))
|
||||
AXES_HANDLER = env.str('AXES_HANDLER', 'axes.handlers.cache.AxesCacheHandler')
|
||||
AXES_IPWARE_PROXY_COUNT = env.int('AXES_IPWARE_PROXY_COUNT', 0)
|
||||
AXES_IPWARE_META_PRECEDENCE_ORDER = env.list('AXES_IPWARE_META_PRECEDENCE_ORDER',
|
||||
default=['REMOTE_ADDR'])
|
||||
AXES_IPWARE_META_PRECEDENCE_ORDER = env.list(
|
||||
'AXES_IPWARE_META_PRECEDENCE_ORDER', default=['REMOTE_ADDR']
|
||||
)
|
||||
|
||||
#
|
||||
# Django Rest Framework SimpleJWT
|
||||
#
|
||||
SIMPLE_JWT['ACCESS_TOKEN_LIFETIME'] = timedelta(minutes=env.int("ACCESS_TOKEN_LIFETIME", 15))
|
||||
SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'] = timedelta(hours=env.int("REFRESH_TOKEN_LIFETIME", 24))
|
||||
SIMPLE_JWT['SIGNING_KEY'] = env.str("SIGNING_KEY", SECRET_KEY)
|
||||
SIMPLE_JWT['ACCESS_TOKEN_LIFETIME'] = timedelta(minutes=env.int('ACCESS_TOKEN_LIFETIME', 15))
|
||||
SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'] = timedelta(hours=env.int('REFRESH_TOKEN_LIFETIME', 24))
|
||||
SIMPLE_JWT['SIGNING_KEY'] = env.str('SIGNING_KEY', SECRET_KEY)
|
||||
|
||||
#
|
||||
# https://docs.djangoproject.com/en/4.1/ref/csrf/
|
||||
#
|
||||
CSRF_TRUSTED_ORIGINS = env.list(
|
||||
"CSRF_TRUSTED_ORIGINS",
|
||||
'CSRF_TRUSTED_ORIGINS',
|
||||
default=['http://127.0.0.1', 'http://localhost', 'https://localhost'],
|
||||
)
|
||||
|
||||
if env.bool('X_FORWARDED_PROTO_HEADER_SET', False):
|
||||
SECURE_PROXY_SSL_HEADER = (
|
||||
env.str('SECURE_PROXY_SSL_HEADER', 'HTTP_X_FORWARDED_PROTO'),
|
||||
'https'
|
||||
'https',
|
||||
)
|
||||
|
||||
REST_FRAMEWORK['NUM_PROXIES'] = env.int('NUMBER_OF_PROXIES', 1)
|
||||
@@ -219,8 +225,8 @@ REST_FRAMEWORK['NUM_PROXIES'] = env.int('NUMBER_OF_PROXIES', 1)
|
||||
#
|
||||
# Celery message queue configuration
|
||||
#
|
||||
CELERY_BROKER_URL = env.str("CELERY_BROKER", "redis://cache:6379/2")
|
||||
CELERY_RESULT_BACKEND = env.str("CELERY_BACKEND", "redis://cache:6379/2")
|
||||
CELERY_BROKER_URL = env.str('CELERY_BROKER', 'redis://cache:6379/2')
|
||||
CELERY_RESULT_BACKEND = env.str('CELERY_BACKEND', 'redis://cache:6379/2')
|
||||
|
||||
#
|
||||
# Prometheus metrics
|
||||
@@ -241,11 +247,7 @@ LOGGING = {
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'console': {
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'simple'
|
||||
},
|
||||
'console': {'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'simple'},
|
||||
},
|
||||
'loggers': {
|
||||
'': {
|
||||
@@ -253,5 +255,5 @@ LOGGING = {
|
||||
'level': env.str('LOG_LEVEL_PYTHON', 'INFO').upper(),
|
||||
'propagate': True,
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ SITE_ROOT = Path(__file__).resolve().parent.parent / 'wger'
|
||||
|
||||
|
||||
# Static and media files (only during development)
|
||||
MEDIA_ROOT = BASE_DIR / 'media'
|
||||
MEDIA_ROOT = BASE_DIR / 'media'
|
||||
STATIC_ROOT = BASE_DIR / 'static'
|
||||
MEDIA_URL = '/media/'
|
||||
STATIC_URL = '/static/'
|
||||
@@ -56,10 +56,8 @@ INSTALLED_APPS = [
|
||||
'django.contrib.sites',
|
||||
'django.contrib.staticfiles',
|
||||
'storages',
|
||||
|
||||
# Uncomment the next line to enable the admin:
|
||||
# 'django.contrib.admin',
|
||||
|
||||
# Apps from wger proper
|
||||
'wger.config',
|
||||
'wger.core',
|
||||
@@ -74,23 +72,17 @@ INSTALLED_APPS = [
|
||||
'wger.gallery',
|
||||
'wger.measurements',
|
||||
# 'wger.trophies',
|
||||
|
||||
# reCaptcha support, see https://github.com/praekelt/django-recaptcha
|
||||
'django_recaptcha',
|
||||
|
||||
# The sitemaps app
|
||||
'django.contrib.sitemaps',
|
||||
|
||||
# thumbnails
|
||||
'easy_thumbnails',
|
||||
|
||||
# CSS/JS compressor
|
||||
'compressor',
|
||||
|
||||
# Form renderer helper
|
||||
'crispy_forms',
|
||||
'crispy_bootstrap5',
|
||||
|
||||
# REST-API
|
||||
'rest_framework',
|
||||
'rest_framework.authtoken',
|
||||
@@ -98,28 +90,20 @@ INSTALLED_APPS = [
|
||||
'rest_framework_simplejwt',
|
||||
'drf_spectacular',
|
||||
'drf_spectacular_sidecar',
|
||||
|
||||
# Breadcrumbs
|
||||
'django_bootstrap_breadcrumbs',
|
||||
|
||||
# CORS
|
||||
'corsheaders',
|
||||
|
||||
# Django Axes
|
||||
'axes',
|
||||
|
||||
# History keeping
|
||||
'simple_history',
|
||||
|
||||
# Django email verification
|
||||
'django_email_verification',
|
||||
|
||||
# Activity stream
|
||||
'actstream',
|
||||
|
||||
# Fontawesome
|
||||
'fontawesomefree',
|
||||
|
||||
# Prometheus
|
||||
'django_prometheus',
|
||||
]
|
||||
@@ -127,43 +111,33 @@ INSTALLED_APPS = [
|
||||
MIDDLEWARE = [
|
||||
# Prometheus
|
||||
'django_prometheus.middleware.PrometheusBeforeMiddleware',
|
||||
|
||||
'corsheaders.middleware.CorsMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
|
||||
# Django Admin
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
|
||||
# Auth proxy middleware
|
||||
'wger.core.middleware.AuthProxyHeaderMiddleware',
|
||||
|
||||
# Javascript Header. Sends helper headers for AJAX
|
||||
'wger.utils.middleware.JavascriptAJAXRedirectionMiddleware',
|
||||
|
||||
# Custom authentication middleware. Creates users on-the-fly for certain paths
|
||||
'wger.utils.middleware.WgerAuthenticationMiddleware',
|
||||
|
||||
# Send an appropriate Header so search engines don't index pages
|
||||
'wger.utils.middleware.RobotsExclusionMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'django.middleware.locale.LocaleMiddleware',
|
||||
|
||||
# History keeping
|
||||
'simple_history.middleware.HistoryRequestMiddleware',
|
||||
|
||||
# Prometheus
|
||||
'django_prometheus.middleware.PrometheusAfterMiddleware',
|
||||
|
||||
# Django Axes
|
||||
'axes.middleware.AxesMiddleware', # should be the last one in the list
|
||||
]
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'axes.backends.AxesStandaloneBackend', # should be the first one in the list
|
||||
|
||||
'wger.core.backends.AuthProxyUserBackend',
|
||||
'django.contrib.auth.backends.ModelBackend',
|
||||
'wger.utils.helpers.EmailAuthBackend',
|
||||
@@ -175,7 +149,6 @@ TEMPLATES = [
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'wger.utils.context_processor.processor',
|
||||
|
||||
# Django
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.template.context_processors.debug',
|
||||
@@ -184,15 +157,14 @@ TEMPLATES = [
|
||||
'django.template.context_processors.static',
|
||||
'django.template.context_processors.tz',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
|
||||
# Breadcrumbs
|
||||
'django.template.context_processors.request'
|
||||
'django.template.context_processors.request',
|
||||
],
|
||||
'loaders': [
|
||||
'django.template.loaders.filesystem.Loader',
|
||||
'django.template.loaders.app_directories.Loader',
|
||||
],
|
||||
'debug': False
|
||||
'debug': False,
|
||||
},
|
||||
},
|
||||
]
|
||||
@@ -203,15 +175,12 @@ MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
|
||||
STATICFILES_FINDERS = (
|
||||
'django.contrib.staticfiles.finders.FileSystemFinder',
|
||||
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
|
||||
|
||||
# Django compressor
|
||||
'compressor.finders.CompressorFinder',
|
||||
)
|
||||
|
||||
# Additional places to copy to static files
|
||||
STATICFILES_DIRS = (
|
||||
('node', os.path.join(BASE_DIR, '..', 'node_modules')),
|
||||
)
|
||||
STATICFILES_DIRS = (('node', os.path.join(BASE_DIR, '..', 'node_modules')),)
|
||||
|
||||
#
|
||||
# Email
|
||||
@@ -303,23 +272,17 @@ LOGGING = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'simple': {
|
||||
'format': '%(levelname)s %(asctime)s %(module)s %(message)s'
|
||||
},
|
||||
'simple': {'format': '%(levelname)s %(asctime)s %(module)s %(message)s'},
|
||||
},
|
||||
'handlers': {
|
||||
'console': {
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.StreamHandler',
|
||||
'formatter': 'simple'
|
||||
},
|
||||
'console': {'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'simple'},
|
||||
},
|
||||
'loggers': {
|
||||
'wger': {
|
||||
'handlers': ['console'],
|
||||
'level': 'INFO',
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
#
|
||||
@@ -358,7 +321,7 @@ AXES_CACHE = 'default'
|
||||
#
|
||||
# Django Crispy Templates
|
||||
#
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = 'bootstrap5'
|
||||
CRISPY_TEMPLATE_PACK = 'bootstrap5'
|
||||
|
||||
#
|
||||
@@ -366,43 +329,16 @@ CRISPY_TEMPLATE_PACK = 'bootstrap5'
|
||||
#
|
||||
THUMBNAIL_ALIASES = {
|
||||
'': {
|
||||
'micro': {
|
||||
'size': (30, 30)
|
||||
},
|
||||
'micro_cropped': {
|
||||
'size': (30, 30),
|
||||
'crop': 'smart'
|
||||
},
|
||||
'thumbnail': {
|
||||
'size': (80, 80)
|
||||
},
|
||||
'thumbnail_cropped': {
|
||||
'size': (80, 80),
|
||||
'crop': 'smart'
|
||||
},
|
||||
'small': {
|
||||
'size': (200, 200)
|
||||
},
|
||||
'small_cropped': {
|
||||
'size': (200, 200),
|
||||
'crop': 'smart'
|
||||
},
|
||||
'medium': {
|
||||
'size': (400, 400)
|
||||
},
|
||||
'medium_cropped': {
|
||||
'size': (400, 400),
|
||||
'crop': 'smart'
|
||||
},
|
||||
'large': {
|
||||
'size': (800, 800),
|
||||
'quality': 90
|
||||
},
|
||||
'large_cropped': {
|
||||
'size': (800, 800),
|
||||
'crop': 'smart',
|
||||
'quality': 90
|
||||
},
|
||||
'micro': {'size': (30, 30)},
|
||||
'micro_cropped': {'size': (30, 30), 'crop': 'smart'},
|
||||
'thumbnail': {'size': (80, 80)},
|
||||
'thumbnail_cropped': {'size': (80, 80), 'crop': 'smart'},
|
||||
'small': {'size': (200, 200)},
|
||||
'small_cropped': {'size': (200, 200), 'crop': 'smart'},
|
||||
'medium': {'size': (400, 400)},
|
||||
'medium_cropped': {'size': (400, 400), 'crop': 'smart'},
|
||||
'large': {'size': (800, 800), 'quality': 90},
|
||||
'large_cropped': {'size': (800, 800), 'crop': 'smart', 'quality': 90},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -424,21 +360,8 @@ if USE_S3:
|
||||
COMPRESS_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
|
||||
COMPRESS_OFFLINE = True
|
||||
COMPRESS_OFFLINE_CONTEXT = [
|
||||
{
|
||||
'request': {
|
||||
'user_agent': {
|
||||
'is_mobile': True
|
||||
}
|
||||
},
|
||||
'STATIC_URL': STATIC_URL
|
||||
}, {
|
||||
'request': {
|
||||
'user_agent': {
|
||||
'is_mobile': False
|
||||
}
|
||||
},
|
||||
'STATIC_URL': STATIC_URL
|
||||
}
|
||||
{'request': {'user_agent': {'is_mobile': True}}, 'STATIC_URL': STATIC_URL},
|
||||
{'request': {'user_agent': {'is_mobile': False}}, 'STATIC_URL': STATIC_URL},
|
||||
]
|
||||
else:
|
||||
STATIC_URL = '/static/'
|
||||
@@ -576,7 +499,6 @@ WGER_SETTINGS = {
|
||||
'USE_CELERY': False,
|
||||
'USE_RECAPTCHA': False,
|
||||
'WGER_INSTANCE': 'https://wger.de',
|
||||
|
||||
# Trophy system settings
|
||||
'TROPHIES_ENABLED': True, # Global toggle to enable/disable trophy system
|
||||
'TROPHIES_INACTIVE_USER_DAYS': 30, # Days of inactivity before skipping trophy evaluation
|
||||
|
||||
Reference in New Issue
Block a user