From 6477c22308e8cfadf2bc595aada8a3511d181eb0 Mon Sep 17 00:00:00 2001 From: Peter Pfeufer Date: Sun, 1 Jun 2025 00:05:34 +0200 Subject: [PATCH] [CHANGE] Use the same quotation marks for strings and not a mix of both MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just while we're at it … --- .../project_name/settings/base.py | 296 +++++++++--------- 1 file changed, 145 insertions(+), 151 deletions(-) diff --git a/allianceauth/project_template/project_name/settings/base.py b/allianceauth/project_template/project_name/settings/base.py index 7bbd9c2d..e7327e21 100644 --- a/allianceauth/project_template/project_name/settings/base.py +++ b/allianceauth/project_template/project_name/settings/base.py @@ -15,68 +15,68 @@ from django.contrib import messages from django.utils.translation import gettext_lazy as _ INSTALLED_APPS = [ - 'allianceauth', # needs to be on top of this list to support favicons in Django admin (see https://gitlab.com/allianceauth/allianceauth/-/issues/1301) - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.contrib.humanize', - 'django_celery_beat', - 'solo', - 'bootstrapform', - 'django_bootstrap5', # https://github.com/zostera/django-bootstrap5 - 'sortedm2m', - 'esi', - 'allianceauth.framework', - 'allianceauth.authentication', - 'allianceauth.services', - 'allianceauth.eveonline', - 'allianceauth.groupmanagement', - 'allianceauth.notifications', - 'allianceauth.thirdparty.navhelper', - 'allianceauth.analytics', - 'allianceauth.menu', - 'allianceauth.theme', - 'allianceauth.theme.darkly', - 'allianceauth.theme.flatly', - 'allianceauth.theme.materia', + "allianceauth", # needs to be on top of this list to support favicons in Django admin (see https://gitlab.com/allianceauth/allianceauth/-/issues/1301) + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", + "django.contrib.humanize", + "django_celery_beat", + "solo", + "bootstrapform", + "django_bootstrap5", # https://github.com/zostera/django-bootstrap5 + "sortedm2m", + "esi", + "allianceauth.framework", + "allianceauth.authentication", + "allianceauth.services", + "allianceauth.eveonline", + "allianceauth.groupmanagement", + "allianceauth.notifications", + "allianceauth.thirdparty.navhelper", + "allianceauth.analytics", + "allianceauth.menu", + "allianceauth.theme", + "allianceauth.theme.darkly", + "allianceauth.theme.flatly", + "allianceauth.theme.materia", "allianceauth.custom_css", - 'allianceauth.crontab', - 'sri', + "allianceauth.crontab", + "sri", ] SRI_ALGORITHM = "sha512" SECRET_KEY = "wow I'm a really bad default secret key" # Celery configuration -BROKER_URL = 'redis://localhost:6379/0' +BROKER_URL = "redis://localhost:6379/0" CELERYBEAT_SCHEDULER = "allianceauth.crontab.schedulers.OffsetDatabaseScheduler" CELERYBEAT_SCHEDULE = { - 'esi_cleanup_callbackredirect': { - 'task': 'esi.tasks.cleanup_callbackredirect', - 'schedule': crontab(minute='0', hour='*/4'), + "esi_cleanup_callbackredirect": { + "task": "esi.tasks.cleanup_callbackredirect", + "schedule": crontab(minute="0", hour="*/4"), }, - 'esi_cleanup_token': { - 'task': 'esi.tasks.cleanup_token', - 'schedule': crontab(minute='0', hour='0'), - 'apply_offset': True, + "esi_cleanup_token": { + "task": "esi.tasks.cleanup_token", + "schedule": crontab(minute="0", hour="0"), + "apply_offset": True, }, - 'run_model_update': { - 'task': 'allianceauth.eveonline.tasks.run_model_update', - 'schedule': crontab(minute='0', hour="*/6"), - 'apply_offset': True + "run_model_update": { + "task": "allianceauth.eveonline.tasks.run_model_update", + "schedule": crontab(minute="0", hour="*/6"), + "apply_offset": True, }, - 'check_all_character_ownership': { - 'task': 'allianceauth.authentication.tasks.check_all_character_ownership', - 'schedule': crontab(minute='0', hour='*/4'), - 'apply_offset': True + "check_all_character_ownership": { + "task": "allianceauth.authentication.tasks.check_all_character_ownership", + "schedule": crontab(minute="0", hour="*/4"), + "apply_offset": True, + }, + "analytics_daily_stats": { + "task": "allianceauth.analytics.tasks.analytics_daily_stats", + "schedule": crontab(minute="0", hour="2"), }, - 'analytics_daily_stats': { - 'task': 'allianceauth.analytics.tasks.analytics_daily_stats', - 'schedule': crontab(minute='0', hour='2'), - } } @@ -85,22 +85,20 @@ PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(PROJECT_DIR) MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'allianceauth.authentication.middleware.UserSettingsMiddleware', - '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', + "django.middleware.security.SecurityMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "allianceauth.authentication.middleware.UserSettingsMiddleware", + "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 = 'allianceauth.urls' +ROOT_URLCONF = "allianceauth.urls" -LOCALE_PATHS = ( - os.path.join(BASE_DIR, 'locale/'), -) +LOCALE_PATHS = (os.path.join(BASE_DIR, "locale/"),) LANGUAGES = ( # Sorted by Language Code alphabetical order + English at top ("en", _("English")), @@ -160,58 +158,58 @@ LANGUAGE_MAPPING = { TEMPLATES = [ { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(PROJECT_DIR, 'templates')], - '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', - 'django.template.context_processors.i18n', - 'django.template.context_processors.media', - 'django.template.context_processors.static', - 'django.template.context_processors.tz', - 'allianceauth.context_processors.auth_settings', + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [os.path.join(PROJECT_DIR, "templates")], + "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", + "django.template.context_processors.i18n", + "django.template.context_processors.media", + "django.template.context_processors.static", + "django.template.context_processors.tz", + "allianceauth.context_processors.auth_settings", ], }, }, ] -WSGI_APPLICATION = 'allianceauth.wsgi.application' +WSGI_APPLICATION = "allianceauth.wsgi.application" # Password validation # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", }, { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", }, { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", }, { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", }, ] AUTHENTICATION_BACKENDS = [ - 'allianceauth.authentication.backends.StateBackend', - 'django.contrib.auth.backends.ModelBackend' + "allianceauth.authentication.backends.StateBackend", + "django.contrib.auth.backends.ModelBackend", ] # Internationalization # https://docs.djangoproject.com/en/1.10/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = "en-us" LANGUAGE_COOKIE_AGE = 1209600 -TIME_ZONE = 'UTC' +TIME_ZONE = "UTC" USE_I18N = True @@ -228,44 +226,42 @@ STORAGES = { }, } -STATIC_URL = '/static/' +STATIC_URL = "/static/" STATICFILES_DIRS = [ - os.path.join(PROJECT_DIR, 'static'), + os.path.join(PROJECT_DIR, "static"), ] -STATIC_ROOT = os.path.join(BASE_DIR, 'static') +STATIC_ROOT = os.path.join(BASE_DIR, "static") # Bootstrap messaging css workaround -MESSAGE_TAGS = { - messages.ERROR: 'danger error' -} +MESSAGE_TAGS = {messages.ERROR: "danger error"} CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", - "LOCATION": "redis://127.0.0.1:6379/1" # change the 1 here for the DB used + "LOCATION": "redis://127.0.0.1:6379/1", # change the 1 here for the DB used } } SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" DEBUG = True -ALLOWED_HOSTS = ['*'] +ALLOWED_HOSTS = ["*"] DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': str(os.path.join(BASE_DIR, 'alliance_auth.sqlite3')), + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": str(os.path.join(BASE_DIR, "alliance_auth.sqlite3")), }, } -SITE_NAME = 'Alliance Auth' +SITE_NAME = "Alliance Auth" DEFAULT_THEME = "allianceauth.theme.flatly.auth_hooks.FlatlyThemeHook" DEFAULT_THEME_DARK = "allianceauth.theme.darkly.auth_hooks.DarklyThemeHook" # Legacy AAv3 user.profile.night_mode=1 -LOGIN_URL = 'auth_login_user' # view that handles login logic +LOGIN_URL = "auth_login_user" # view that handles login logic -LOGIN_REDIRECT_URL = 'authentication:dashboard' # default destination when logging in if no redirect specified -LOGOUT_REDIRECT_URL = 'authentication:dashboard' # destination after logging out +LOGIN_REDIRECT_URL = "authentication:dashboard" # default destination when logging in if no redirect specified +LOGOUT_REDIRECT_URL = "authentication:dashboard" # destination after logging out # Both of these redirects accept values as per the django redirect shortcut # https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#redirect # - url names eg 'authentication:dashboard' @@ -273,73 +269,71 @@ LOGOUT_REDIRECT_URL = 'authentication:dashboard' # destination after logging ou # - absolute urls eg 'http://example.com/dashboard' # scopes required on new tokens when logging in. Cannot be blank. -LOGIN_TOKEN_SCOPES = ['publicData'] +LOGIN_TOKEN_SCOPES = ["publicData"] EMAIL_TIMEOUT = 15 # number of days email verification links are valid for ACCOUNT_ACTIVATION_DAYS = 1 -ESI_API_URL = 'https://esi.evetech.net/' +ESI_API_URL = "https://esi.evetech.net/" LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'formatters': { - 'verbose': { - 'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", - 'datefmt': "%d/%b/%Y %H:%M:%S" + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "verbose": { + "format": "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", + "datefmt": "%d/%b/%Y %H:%M:%S", }, - 'simple': { - 'format': '%(levelname)s %(message)s' + "simple": {"format": "%(levelname)s %(message)s"}, + }, + "handlers": { + "log_file": { + "level": "INFO", # edit this line to change logging level to file + "class": "logging.handlers.RotatingFileHandler", + "filename": os.path.join(BASE_DIR, "log/allianceauth.log"), + "formatter": "verbose", + "maxBytes": 1024 * 1024 * 5, # edit this line to change max log file size + "backupCount": 5, # edit this line to change number of log backups + }, + "extension_file": { + "level": "INFO", + "class": "logging.handlers.RotatingFileHandler", + "filename": os.path.join(BASE_DIR, "log/extensions.log"), + "formatter": "verbose", + "maxBytes": 1024 * 1024 * 5, # edit this line to change max log file size + "backupCount": 5, # edit this line to change number of log backups + }, + "console": { + "level": "DEBUG", # edit this line to change logging level to console + "class": "logging.StreamHandler", + "formatter": "verbose", + }, + "notifications": { # creates notifications for users with logging_notifications permission + "level": "ERROR", # edit this line to change logging level to notifications + "class": "allianceauth.notifications.handlers.NotificationHandler", + "formatter": "verbose", }, }, - 'handlers': { - 'log_file': { - 'level': 'INFO', # edit this line to change logging level to file - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': os.path.join(BASE_DIR, 'log/allianceauth.log'), - 'formatter': 'verbose', - 'maxBytes': 1024 * 1024 * 5, # edit this line to change max log file size - 'backupCount': 5, # edit this line to change number of log backups + "loggers": { + "allianceauth": { + "handlers": ["log_file", "console", "notifications"], + "level": "DEBUG", }, - 'extension_file': { - 'level': 'INFO', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': os.path.join(BASE_DIR, 'log/extensions.log'), - 'formatter': 'verbose', - 'maxBytes': 1024 * 1024 * 5, # edit this line to change max log file size - 'backupCount': 5, # edit this line to change number of log backups + "extensions": { + "handlers": ["extension_file", "console"], + "level": "DEBUG", }, - 'console': { - 'level': 'DEBUG', # edit this line to change logging level to console - 'class': 'logging.StreamHandler', - 'formatter': 'verbose', + "django": { + "handlers": ["log_file", "console"], + "level": "ERROR", }, - 'notifications': { # creates notifications for users with logging_notifications permission - 'level': 'ERROR', # edit this line to change logging level to notifications - 'class': 'allianceauth.notifications.handlers.NotificationHandler', - 'formatter': 'verbose', + "esi": { + "handlers": ["log_file", "console"], + "level": "DEBUG", }, }, - 'loggers': { - 'allianceauth': { - 'handlers': ['log_file', 'console', 'notifications'], - 'level': 'DEBUG', - }, - 'extensions': { - 'handlers': ['extension_file', 'console'], - 'level': 'DEBUG', - }, - 'django': { - 'handlers': ['log_file', 'console'], - 'level': 'ERROR', - }, - 'esi': { - 'handlers': ['log_file', 'console'], - 'level': 'DEBUG', - }, - } } DEFAULT_AUTO_FIELD = "django.db.models.AutoField"