From ef3e9a0ae0e83f4fd129afee34c391bcff299339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Tue, 1 Oct 2024 15:20:30 +0200 Subject: [PATCH] feat(api): include servers in OpenAPI specification --- weblate/api/spectacular.py | 7 ++++++- weblate/settings_docker.py | 2 +- weblate/settings_example.py | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/weblate/api/spectacular.py b/weblate/api/spectacular.py index 037cac3ce381..19f415d07df0 100644 --- a/weblate/api/spectacular.py +++ b/weblate/api/spectacular.py @@ -7,7 +7,9 @@ from django.utils.translation import gettext_lazy -def get_spectacular_settings(installed_apps: list[str]) -> None: +def get_spectacular_settings( + installed_apps: list[str], site_url: str, site_title: str +) -> None: settings = { # Use redoc from sidecar # TODO: Should bundle it internally @@ -30,6 +32,9 @@ def get_spectacular_settings(installed_apps: list[str]) -> None: }, }, }, + "SERVERS": [ + {"url": site_url, "description": site_title}, + ], # Document only API (not webauthn and other drf endpoints) "SERVE_URLCONF": "weblate.api.urls", "TITLE": gettext_lazy("Weblate's REST API"), diff --git a/weblate/settings_docker.py b/weblate/settings_docker.py index 766d0056b239..738655111462 100644 --- a/weblate/settings_docker.py +++ b/weblate/settings_docker.py @@ -1233,7 +1233,7 @@ "UNAUTHENTICATED_USER": "weblate.auth.models.get_anonymous", "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", } -SPECTACULAR_SETTINGS = get_spectacular_settings(INSTALLED_APPS) +SPECTACULAR_SETTINGS = get_spectacular_settings(INSTALLED_APPS, SITE_URL, SITE_TITLE) # Fonts CDN URL FONTS_CDN_URL = None diff --git a/weblate/settings_example.py b/weblate/settings_example.py index eeee75c3b2dc..1ff296dd7ffd 100644 --- a/weblate/settings_example.py +++ b/weblate/settings_example.py @@ -832,7 +832,7 @@ "UNAUTHENTICATED_USER": "weblate.auth.models.get_anonymous", "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", } -SPECTACULAR_SETTINGS = get_spectacular_settings(INSTALLED_APPS) +SPECTACULAR_SETTINGS = get_spectacular_settings(INSTALLED_APPS, SITE_URL, SITE_TITLE) # Fonts CDN URL FONTS_CDN_URL = None