From 4f7e61f73580544f2f2d88c3af8581ac64c73773 Mon Sep 17 00:00:00 2001 From: Github-actions Date: Sun, 11 Jan 2026 11:13:23 +0000 Subject: [PATCH] Automatic linting --- manage.py | 3 +- settings/ci.py | 12 +-- settings/local_dev.py | 16 ++-- settings/main.py | 150 ++++++++++++++++++------------------ settings/settings_global.py | 118 +++++----------------------- 5 files changed, 112 insertions(+), 187 deletions(-) diff --git a/manage.py b/manage.py index 720ca5c44..b8b636672 100755 --- a/manage.py +++ b/manage.py @@ -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) diff --git a/settings/ci.py b/settings/ci.py index 64f552ef2..af4dbb364 100644 --- a/settings/ci.py +++ b/settings/ci.py @@ -27,11 +27,11 @@ DEBUG = True # Application settings WGER_SETTINGS['EMAIL_FROM'] = 'wger Workout Manager ' -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. diff --git a/settings/local_dev.py b/settings/local_dev.py index d5c86eec9..4e650622a 100644 --- a/settings/local_dev.py +++ b/settings/local_dev.py @@ -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_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 = { diff --git a/settings/main.py b/settings/main.py index 2154e1412..b5aefc556 100644 --- a/settings/main.py +++ b/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 ") +DEFAULT_FROM_EMAIL = env.str('FROM_EMAIL', 'wger Workout Manager ') 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, }, - } + }, } diff --git a/settings/settings_global.py b/settings/settings_global.py index 37846b769..2d66cdc8c 100644 --- a/settings/settings_global.py +++ b/settings/settings_global.py @@ -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