Skip to content
Snippets Groups Projects
Commit 7bf5bcae authored by Pinguin's avatar Pinguin :penguin:
Browse files

Revert "Try to remove backend"

This reverts commit aa85db6b
parent aa85db6b
No related branches found
No related tags found
1 merge request!1336Resolve "Remove Yubikey support"
Pipeline #158502 failed
......@@ -37,31 +37,11 @@ class CoreConfig(AppConfig):
}
licence = "EUPL-1.2+"
copyright_info = (
(
[2017, 2018, 2019, 2020, 2021, 2022, 2023],
"Jonathan Weth",
"wethjo@katharineum.de",
),
(
[2017, 2018, 2019, 2020],
"Frank Poetzsch-Heffter",
"p-h@katharineum.de",
),
(
[2018, 2019, 2020, 2021, 2022, 2023],
"Hangzhi Yu",
"yuha@katharineum.de",
),
(
[2018, 2019, 2020, 2021, 2022, 2023],
"Julian Leucker",
"leuckeju@katharineum.de",
),
(
[2019, 2020, 2021, 2022, 2023],
"Dominik George",
"dominik.george@teckids.org",
),
([2017, 2018, 2019, 2020, 2021, 2022, 2023], "Jonathan Weth", "wethjo@katharineum.de"),
([2017, 2018, 2019, 2020], "Frank Poetzsch-Heffter", "p-h@katharineum.de"),
([2018, 2019, 2020, 2021, 2022, 2023], "Hangzhi Yu", "yuha@katharineum.de"),
([2018, 2019, 2020, 2021, 2022, 2023], "Julian Leucker", "leuckeju@katharineum.de"),
([2019, 2020, 2021, 2022, 2023], "Dominik George", "dominik.george@teckids.org"),
([2019, 2020, 2021, 2022], "Tom Teichler", "tom.teichler@teckids.org"),
([2019], "mirabilos", "thorsten.glaser@teckids.org"),
([2021, 2022, 2023], "magicfelix", "felix@felix-zauberer.de"),
......@@ -82,15 +62,9 @@ class CoreConfig(AppConfig):
personpreferencemodel = self.get_model("PersonPreferenceModel")
grouppreferencemodel = self.get_model("GroupPreferenceModel")
preference_models.register(
sitepreferencemodel, site_preferences_registry
)
preference_models.register(
personpreferencemodel, person_preferences_registry
)
preference_models.register(
grouppreferencemodel, group_preferences_registry
)
preference_models.register(sitepreferencemodel, site_preferences_registry)
preference_models.register(personpreferencemodel, person_preferences_registry)
preference_models.register(grouppreferencemodel, group_preferences_registry)
from .health_checks import (
BackupJobHealthCheck,
......@@ -130,21 +104,14 @@ class CoreConfig(AppConfig):
favicon = Favicon.on_site.update_or_create(
title=name,
defaults={
"isFavicon": is_favicon,
"faviconImage": file_obj,
},
defaults={"isFavicon": is_favicon, "faviconImage": file_obj},
)[0]
FaviconImg.objects.filter(faviconFK=favicon).delete()
else:
Favicon.on_site.filter(
title=name, isFavicon=is_favicon
).delete()
Favicon.on_site.filter(title=name, isFavicon=is_favicon).delete()
if name in settings.DEFAULT_FAVICON_PATHS:
get_or_create_favicon(
name,
settings.DEFAULT_FAVICON_PATHS[name],
is_favicon=is_favicon,
name, settings.DEFAULT_FAVICON_PATHS[name], is_favicon=is_favicon
)
def post_migrate(
......@@ -157,9 +124,8 @@ class CoreConfig(AppConfig):
) -> None:
from django.conf import settings # noqa
super().post_migrate(
app_config, verbosity, interactive, using, **kwargs
)
super().post_migrate(app_config, verbosity, interactive, using, **kwargs)
# Ensure that default Favicon object exists
for name, default in settings.DEFAULT_FAVICON_PATHS.items():
......@@ -169,22 +135,14 @@ class CoreConfig(AppConfig):
create_default_celery_schedule()
def user_logged_in(
self,
sender: type,
request: Optional[HttpRequest],
user: "User",
**kwargs,
self, sender: type, request: Optional[HttpRequest], user: "User", **kwargs
) -> None:
if has_person(user):
# Save the associated person to pick up defaults
user.person.save()
def user_logged_out(
self,
sender: type,
request: Optional[HttpRequest],
user: "User",
**kwargs,
self, sender: type, request: Optional[HttpRequest], user: "User", **kwargs
) -> None:
messages.success(request, _("You have been logged out successfully."))
......@@ -197,9 +155,7 @@ class CoreConfig(AppConfig):
if settings.OAUTH2_PROVIDER.get("OIDC_ENABLED", False):
scopes |= {
"openid": _("OpenID Connect scope"),
"profile": _(
"Given name, family name, link to profile and picture if existing."
),
"profile": _("Given name, family name, link to profile and picture if existing."),
"address": _("Full home postal address"),
"email": _("Email address"),
"phone": _("Home and mobile phone"),
......@@ -208,9 +164,7 @@ class CoreConfig(AppConfig):
return scopes
@classmethod
def get_additional_claims(
cls, scopes: list[str], request: OauthlibRequest
) -> dict[str, Any]:
def get_additional_claims(cls, scopes: list[str], request: OauthlibRequest) -> dict[str, Any]:
django_request = HttpRequest()
django_request.META = request.headers
......@@ -254,9 +208,7 @@ class CoreConfig(AppConfig):
if "groups" in scopes and has_person(request.user):
claims["groups"] = list(
request.user.person.member_of.values_list(
"name", flat=True
).all()
request.user.person.member_of.values_list("name", flat=True).all()
)
return claims
......@@ -43,9 +43,7 @@ _settings = LazySettings(
)
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# Cache directory for external operations
CACHE_DIR = _settings.get("caching.dir", os.path.join(BASE_DIR, "cache"))
......@@ -68,14 +66,10 @@ UWSGI_SERVE_MEDIA = False
DEV_SERVER_PORT = 8000
DJANGO_VITE_DEV_SERVER_PORT = DEV_SERVER_PORT + 1
ALLOWED_HOSTS = _settings.get(
"http.allowed_hosts", [getfqdn(), "localhost", "127.0.0.1", "[::1]"]
)
ALLOWED_HOSTS = _settings.get("http.allowed_hosts", [getfqdn(), "localhost", "127.0.0.1", "[::1]"])
BASE_URL = _settings.get(
"http.base_url",
f"http://localhost:{DEV_SERVER_PORT}"
if DEBUG
else f"https://{ALLOWED_HOSTS[0]}",
f"http://localhost:{DEV_SERVER_PORT}" if DEBUG else f"https://{ALLOWED_HOSTS[0]}",
)
......@@ -84,19 +78,12 @@ def generate_trusted_origins():
origins += [f"http://{host}" for host in ALLOWED_HOSTS]
origins += [f"https://{host}" for host in ALLOWED_HOSTS]
if DEBUG:
origins += [
f"http://{host}:{DEV_SERVER_PORT}" for host in ALLOWED_HOSTS
]
origins += [
f"http://{host}:{DJANGO_VITE_DEV_SERVER_PORT}"
for host in ALLOWED_HOSTS
]
origins += [f"http://{host}:{DEV_SERVER_PORT}" for host in ALLOWED_HOSTS]
origins += [f"http://{host}:{DJANGO_VITE_DEV_SERVER_PORT}" for host in ALLOWED_HOSTS]
return origins
CSRF_TRUSTED_ORIGINS = _settings.get(
"http.trusted_origins", generate_trusted_origins()
)
CSRF_TRUSTED_ORIGINS = _settings.get("http.trusted_origins", generate_trusted_origins())
# Application definition
INSTALLED_APPS = [
......@@ -269,9 +256,7 @@ REDIS_HOST = _settings.get("redis.host", "localhost")
REDIS_PORT = _settings.get("redis.port", 6379)
REDIS_DB = _settings.get("redis.database", 0)
REDIS_PASSWORD = _settings.get("redis.password", None)
REDIS_USER = _settings.get(
"redis.user", None if REDIS_PASSWORD is None else "default"
)
REDIS_USER = _settings.get("redis.user", None if REDIS_PASSWORD is None else "default")
REDIS_URL = (
f"redis://{REDIS_USER+':'+REDIS_PASSWORD+'@' if REDIS_USER else ''}"
......@@ -343,9 +328,7 @@ if _SOCIALACCOUNT_PROVIDERS:
# Add configured social auth providers to INSTALLED_APPS
for provider, config in SOCIALACCOUNT_PROVIDERS.items():
INSTALLED_APPS.append(f"allauth.socialaccount.providers.{provider}")
SOCIALACCOUNT_PROVIDERS[provider] = {
k.upper(): v for k, v in config.items()
}
SOCIALACCOUNT_PROVIDERS[provider] = {k.upper(): v for k, v in config.items()}
# Configure custom forms
......@@ -361,29 +344,21 @@ ACCOUNT_ADAPTER = "aleksis.core.util.auth_helpers.OurAccountAdapter"
SIGNUP_PASSWORD_ENTER_TWICE = True
# Allow login by either username or email
ACCOUNT_AUTHENTICATION_METHOD = _settings.get(
"auth.registration.method", "username_email"
)
ACCOUNT_AUTHENTICATION_METHOD = _settings.get("auth.registration.method", "username_email")
# Require email address to sign up
ACCOUNT_EMAIL_REQUIRED = _settings.get("auth.registration.email_required", True)
SOCIALACCOUNT_EMAIL_REQUIRED = False
# Cooldown for verification mails
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN = _settings.get(
"auth.registration.verification_cooldown", 180
)
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN = _settings.get("auth.registration.verification_cooldown", 180)
# Require email verification after sign up
ACCOUNT_EMAIL_VERIFICATION = _settings.get(
"auth.registration.email_verification", "optional"
)
ACCOUNT_EMAIL_VERIFICATION = _settings.get("auth.registration.email_verification", "optional")
SOCIALACCOUNT_EMAIL_VERIFICATION = False
# Email subject prefix for verification mails
ACCOUNT_EMAIL_SUBJECT_PREFIX = _settings.get(
"auth.registration.subject", "[AlekSIS] "
)
ACCOUNT_EMAIL_SUBJECT_PREFIX = _settings.get("auth.registration.subject", "[AlekSIS] ")
# Max attempts before login timeout
ACCOUNT_LOGIN_ATTEMPTS_LIMIT = _settings.get("auth.login.login_limit", 5)
......@@ -395,14 +370,10 @@ ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = _settings.get("auth.login.login_timeout", 300)
ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE = True
# Enforce uniqueness of email addresses
ACCOUNT_UNIQUE_EMAIL = _settings.get(
"auth.login.registration.unique_email", True
)
ACCOUNT_UNIQUE_EMAIL = _settings.get("auth.login.registration.unique_email", True)
# Configurable username validators
ACCOUNT_USERNAME_VALIDATORS = (
"aleksis.core.util.auth_helpers.custom_username_validators"
)
ACCOUNT_USERNAME_VALIDATORS = "aleksis.core.util.auth_helpers.custom_username_validators"
# Configuration for django-invitations
......@@ -440,9 +411,7 @@ _OIDC_RSA_KEY_DEFAULT = "/etc/aleksis/oidc.pem"
_OIDC_RSA_KEY = _settings.get("oauth2.oidc.rsa_key", "/etc/aleksis/oidc.pem")
if "BEGIN RSA PRIVATE KEY" in _OIDC_RSA_KEY:
OAUTH2_PROVIDER["OIDC_RSA_PRIVATE_KEY"] = _OIDC_RSA_KEY
elif _OIDC_RSA_KEY == _OIDC_RSA_KEY_DEFAULT and not os.path.exists(
_OIDC_RSA_KEY
):
elif _OIDC_RSA_KEY == _OIDC_RSA_KEY_DEFAULT and not os.path.exists(_OIDC_RSA_KEY):
warnings.warn(
(
f"The default OIDC RSA key in {_OIDC_RSA_KEY} does not exist. "
......@@ -563,18 +532,16 @@ if _settings.get("ldap.uri", None):
"is_superuser" in AUTH_LDAP_USER_FLAGS_BY_GROUP
and "is_staff" not in AUTH_LDAP_USER_FLAGS_BY_GROUP
):
AUTH_LDAP_USER_FLAGS_BY_GROUP[
"is_staff"
] = AUTH_LDAP_USER_FLAGS_BY_GROUP["is_superuser"]
AUTH_LDAP_USER_FLAGS_BY_GROUP["is_staff"] = AUTH_LDAP_USER_FLAGS_BY_GROUP[
"is_superuser"
]
# Add ModelBackend last so all other backends get a chance
# to verify passwords first
AUTHENTICATION_BACKENDS.append("django.contrib.auth.backends.ModelBackend")
# Authentication backend for django-allauth.
AUTHENTICATION_BACKENDS.append(
"allauth.account.auth_backends.AuthenticationBackend"
)
AUTHENTICATION_BACKENDS.append("allauth.account.auth_backends.AuthenticationBackend")
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/
......@@ -659,9 +626,7 @@ YARN_INSTALLED_APPS = [
merge_app_settings("YARN_INSTALLED_APPS", YARN_INSTALLED_APPS, True)
JS_URL = _settings.get("js_assets.url", STATIC_URL)
JS_ROOT = _settings.get(
"js_assets.root", os.path.join(NODE_MODULES_ROOT, "node_modules")
)
JS_ROOT = _settings.get("js_assets.root", os.path.join(NODE_MODULES_ROOT, "node_modules"))
DJANGO_VITE_ASSETS_PATH = os.path.join(NODE_MODULES_ROOT, "vite_bundles")
DJANGO_VITE_DEV_MODE = DEBUG
......@@ -672,14 +637,10 @@ STATICFILES_DIRS = (
)
ANY_JS = {
"materialize": {
"js_url": JS_URL
+ "/@materializecss/materialize/dist/js/materialize.min.js"
},
"materialize": {"js_url": JS_URL + "/@materializecss/materialize/dist/js/materialize.min.js"},
"jQuery": {"js_url": JS_URL + "/jquery/dist/jquery.min.js"},
"material-design-icons": {
"css_url": JS_URL
+ "/material-design-icons-iconfont/dist/material-design-icons.css"
"css_url": JS_URL + "/material-design-icons-iconfont/dist/material-design-icons.css"
},
"paper-css": {"css_url": JS_URL + "/paper-css/paper.min.css"},
"select2-materialize": {
......@@ -687,9 +648,7 @@ ANY_JS = {
"js_url": JS_URL + "/select2-materialize/index.js",
},
"sortablejs": {"js_url": JS_URL + "/sortablejs/Sortable.min.js"},
"jquery-sortablejs": {
"js_url": JS_URL + "/jquery-sortablejs/jquery-sortable.js"
},
"jquery-sortablejs": {"js_url": JS_URL + "/jquery-sortablejs/jquery-sortable.js"},
"Roboto100": {"css_url": JS_URL + "/@fontsource/roboto/100.css"},
"Roboto300": {"css_url": JS_URL + "/@fontsource/roboto/300.css"},
"Roboto400": {"css_url": JS_URL + "/@fontsource/roboto/400.css"},
......@@ -714,8 +673,7 @@ SASS_PROCESSOR_CUSTOM_FUNCTIONS = {
}
SASS_PROCESSOR_INCLUDE_DIRS = [
_settings.get(
"materialize.sass_path",
os.path.join(JS_ROOT, "@materializecss", "materialize", "sass"),
"materialize.sass_path", os.path.join(JS_ROOT, "@materializecss", "materialize", "sass")
),
os.path.join(STATIC_ROOT, "public"),
]
......@@ -724,8 +682,7 @@ ICONIFY_JSON_ROOT = os.path.join(JS_ROOT, "@iconify", "json")
ICONIFY_COLLECTIONS_ALLOWED = ["mdi"]
ADMINS = _settings.get(
"contact.admins",
[(AUTH_INITIAL_SUPERUSER["username"], AUTH_INITIAL_SUPERUSER["email"])],
"contact.admins", [(AUTH_INITIAL_SUPERUSER["username"], AUTH_INITIAL_SUPERUSER["email"])]
)
SERVER_EMAIL = _settings.get("contact.from", ADMINS[0][1])
DEFAULT_FROM_EMAIL = _settings.get("contact.from", ADMINS[0][1])
......@@ -757,27 +714,17 @@ MAINTENANCE_MODE_IGNORE_SUPERUSER = True
MAINTENANCE_MODE_STATE_FILE_NAME = _settings.get(
"maintenance.statefile", "maintenance_mode_state.txt"
)
MAINTENANCE_MODE_STATE_BACKEND = (
"maintenance_mode.backends.DefaultStorageBackend"
)
MAINTENANCE_MODE_STATE_BACKEND = "maintenance_mode.backends.DefaultStorageBackend"
DBBACKUP_STORAGE = _settings.get(
"backup.storage", "django.core.files.storage.FileSystemStorage"
)
DBBACKUP_STORAGE_OPTIONS = {
"location": _settings.get("backup.location", "/var/backups/aleksis")
}
DBBACKUP_STORAGE = _settings.get("backup.storage", "django.core.files.storage.FileSystemStorage")
DBBACKUP_STORAGE_OPTIONS = {"location": _settings.get("backup.location", "/var/backups/aleksis")}
DBBACKUP_CLEANUP_KEEP = _settings.get("backup.database.keep", 10)
DBBACKUP_CLEANUP_KEEP_MEDIA = _settings.get("backup.media.keep", 10)
DBBACKUP_GPG_RECIPIENT = _settings.get("backup.gpg_recipient", None)
DBBACKUP_COMPRESS_DB = _settings.get("backup.database.compress", True)
DBBACKUP_ENCRYPT_DB = _settings.get(
"backup.database.encrypt", DBBACKUP_GPG_RECIPIENT is not None
)
DBBACKUP_ENCRYPT_DB = _settings.get("backup.database.encrypt", DBBACKUP_GPG_RECIPIENT is not None)
DBBACKUP_COMPRESS_MEDIA = _settings.get("backup.media.compress", True)
DBBACKUP_ENCRYPT_MEDIA = _settings.get(
"backup.media.encrypt", DBBACKUP_GPG_RECIPIENT is not None
)
DBBACKUP_ENCRYPT_MEDIA = _settings.get("backup.media.encrypt", DBBACKUP_GPG_RECIPIENT is not None)
DBBACKUP_CLEANUP_DB = _settings.get("backup.database.clean", True)
DBBACKUP_CLEANUP_MEDIA = _settings.get("backup.media.clean", True)
DBBACKUP_CONNECTOR_MAPPING = {
......@@ -788,15 +735,10 @@ if _settings.get("backup.storage.type", "").lower() == "s3":
DBBACKUP_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
DBBACKUP_STORAGE_OPTIONS = {
key: value
for (key, value) in _settings.get("backup.storage.s3").items()
key: value for (key, value) in _settings.get("backup.storage.s3").items()
}
IMPERSONATE = {
"REQUIRE_SUPERUSER": True,
"ALLOW_SUPERUSER": True,
"REDIRECT_FIELD_NAME": "next",
}
IMPERSONATE = {"REQUIRE_SUPERUSER": True, "ALLOW_SUPERUSER": True, "REDIRECT_FIELD_NAME": "next"}
DJANGO_TABLES2_TEMPLATE = "django_tables2/materialize.html"
......@@ -839,9 +781,7 @@ if _settings.get("celery.email", False):
if _settings.get("dev.uwsgi.celery", DEBUG):
concurrency = _settings.get("celery.uwsgi.concurrency", 2)
UWSGI.setdefault("attach-daemon", [])
UWSGI["attach-daemon"].append(
f"celery -A aleksis.core worker --concurrency={concurrency}"
)
UWSGI["attach-daemon"].append(f"celery -A aleksis.core worker --concurrency={concurrency}")
UWSGI["attach-daemon"].append("celery -A aleksis.core beat")
UWSGI["attach-daemon"].append("aleksis-admin vite --no-install serve")
......@@ -872,16 +812,7 @@ CKEDITOR_CONFIGS = {
"toolbar_Full": [
{
"name": "document",
"items": [
"Source",
"-",
"Save",
"NewPage",
"Preview",
"Print",
"-",
"Templates",
],
"items": ["Source", "-", "Save", "NewPage", "Preview", "Print", "-", "Templates"],
},
{
"name": "clipboard",
......@@ -947,10 +878,7 @@ CKEDITOR_CONFIGS = {
},
{"name": "links", "items": ["Link", "Unlink", "Anchor"]},
"/",
{
"name": "styles",
"items": ["Styles", "Format", "Font", "FontSize"],
},
{"name": "styles", "items": ["Styles", "Format", "Font", "FontSize"]},
{"name": "colors", "items": ["TextColor", "BGColor"]},
{"name": "tools", "items": ["Maximize", "ShowBlocks"]},
{"name": "about", "items": ["About"]},
......@@ -995,12 +923,7 @@ BLEACH_ALLOWED_ATTRIBUTES = ["href", "title", "style"]
# Which CSS properties are allowed in 'style' attributes (assuming
# style is an allowed attribute)
BLEACH_ALLOWED_STYLES = [
"font-family",
"font-weight",
"text-decoration",
"font-variant",
]
BLEACH_ALLOWED_STYLES = ["font-family", "font-weight", "text-decoration", "font-variant"]
# Strip unknown tags if True, replace with HTML escaped characters if
# False
......@@ -1044,12 +967,8 @@ LOGGING["loggers"]["celery"] = {
"propagate": False,
}
# Set Django log levels
LOGGING["loggers"]["django"]["level"] = _settings.get(
"logging.level", "WARNING"
)
LOGGING["loggers"]["django.server"]["level"] = _settings.get(
"logging.level", "WARNING"
)
LOGGING["loggers"]["django"]["level"] = _settings.get("logging.level", "WARNING")
LOGGING["loggers"]["django.server"]["level"] = _settings.get("logging.level", "WARNING")
# Rules and permissions
......@@ -1085,9 +1004,7 @@ MEDIABACKUP_CHECK_SECONDS = _settings.get("backup.media.check_seconds", 7200)
PROMETHEUS_EXPORT_MIGRATIONS = False
PROMETHEUS_METRICS_EXPORT_PORT = _settings.get("prometheus.metrics.port", None)
PROMETHEUS_METRICS_EXPORT_ADDRESS = _settings.get(
"prometheus.metrucs.address", None
)
PROMETHEUS_METRICS_EXPORT_ADDRESS = _settings.get("prometheus.metrucs.address", None)
SECURE_PROXY_SSL_HEADER = ("REQUEST_SCHEME", "https")
......@@ -1100,15 +1017,11 @@ if _settings.get("storage.type", "").lower() == "s3":
INSTALLED_APPS.append("storages")
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
FILE_UPLOAD_HANDLERS.remove(
"django.core.files.uploadhandler.MemoryFileUploadHandler"
)
FILE_UPLOAD_HANDLERS.remove("django.core.files.uploadhandler.MemoryFileUploadHandler")
if _settings.get("storage.s3.static.enabled", False):
STATICFILES_STORAGE = "storages.backends.s3boto3.S3StaticStorage"
AWS_STORAGE_BUCKET_NAME_STATIC = _settings.get(
"storage.s3.static.bucket_name", ""
)
AWS_STORAGE_BUCKET_NAME_STATIC = _settings.get("storage.s3.static.bucket_name", "")
AWS_S3_MAX_AGE_SECONDS_CACHED_STATIC = _settings.get(
"storage.s3.static.max_age_seconds", 24 * 60 * 60
)
......@@ -1119,32 +1032,20 @@ if _settings.get("storage.type", "").lower() == "s3":
AWS_SESSION_TOKEN = _settings.get("storage.s3.session_token", "")
AWS_STORAGE_BUCKET_NAME = _settings.get("storage.s3.bucket_name", "")
AWS_LOCATION = _settings.get("storage.s3.location", "")
AWS_S3_ADDRESSING_STYLE = _settings.get(
"storage.s3.addressing_style", "auto"
)
AWS_S3_ADDRESSING_STYLE = _settings.get("storage.s3.addressing_style", "auto")
AWS_S3_ENDPOINT_URL = _settings.get("storage.s3.endpoint_url", "")
AWS_S3_KEY_PREFIX = _settings.get("storage.s3.key_prefix", "")
AWS_S3_BUCKET_AUTH = _settings.get("storage.s3.bucket_auth", True)
AWS_S3_MAX_AGE_SECONDS = _settings.get(
"storage.s3.max_age_seconds", 24 * 60 * 60
)
AWS_S3_MAX_AGE_SECONDS = _settings.get("storage.s3.max_age_seconds", 24 * 60 * 60)
AWS_S3_PUBLIC_URL = _settings.get("storage.s3.public_url", "")
AWS_S3_REDUCED_REDUNDANCY = _settings.get(
"storage.s3.reduced_redundancy", False
)
AWS_S3_CONTENT_DISPOSITION = _settings.get(
"storage.s3.content_disposition", ""
)
AWS_S3_REDUCED_REDUNDANCY = _settings.get("storage.s3.reduced_redundancy", False)
AWS_S3_CONTENT_DISPOSITION = _settings.get("storage.s3.content_disposition", "")
AWS_S3_CONTENT_LANGUAGE = _settings.get("storage.s3.content_language", "")
AWS_S3_METADATA = _settings.get("storage.s3.metadata", {})
AWS_S3_ENCRYPT_KEY = _settings.get("storage.s3.encrypt_key", False)
AWS_S3_KMS_ENCRYPTION_KEY_ID = _settings.get(
"storage.s3.kms_encryption_key_id", ""
)
AWS_S3_KMS_ENCRYPTION_KEY_ID = _settings.get("storage.s3.kms_encryption_key_id", "")
AWS_S3_GZIP = _settings.get("storage.s3.gzip", True)
AWS_S3_SIGNATURE_VERSION = _settings.get(
"storage.s3.signature_version", None
)
AWS_S3_SIGNATURE_VERSION = _settings.get("storage.s3.signature_version", None)
AWS_S3_FILE_OVERWRITE = _settings.get("storage.s3.file_overwrite", False)
AWS_S3_VERIFY = _settings.get("storage.s3.verify", True)
AWS_S3_USE_SSL = _settings.get("storage.s3.use_ssl", True)
......@@ -1169,12 +1070,8 @@ if SENTRY_ENABLED:
SENTRY_SETTINGS = {
"dsn": _settings.get("health.sentry.dsn"),
"environment": _settings.get("health.sentry.environment"),
"traces_sample_rate": _settings.get(
"health.sentry.traces_sample_rate", 1.0
),
"send_default_pii": _settings.get(
"health.sentry.send_default_pii", False
),
"traces_sample_rate": _settings.get("health.sentry.traces_sample_rate", 1.0),
"send_default_pii": _settings.get("health.sentry.send_default_pii", False),
"release": f"aleksis-core@{__version__}",
"in_app_include": "aleksis",
}
......@@ -1187,9 +1084,7 @@ if SENTRY_ENABLED:
**SENTRY_SETTINGS,
)
SHELL_PLUS_MODEL_IMPORTS_RESOLVER = (
"django_extensions.collision_resolvers.AppLabelPrefixCR"
)
SHELL_PLUS_MODEL_IMPORTS_RESOLVER = "django_extensions.collision_resolvers.AppLabelPrefixCR"
SHELL_PLUS_APP_PREFIXES = {
"auth": "auth",
}
......
......@@ -175,7 +175,7 @@ freezegun = "^1.1.0"
optional = true
[tool.poetry.group.docs.dependencies]
sphinx = "^7.2"
sphinx = "^7.0"
sphinxcontrib-django = "^2.3.0"
sphinxcontrib-svg2pdfconverter = "^1.1.1"
sphinx-autodoc-typehints = "^1.7"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment