From c8edbd285b2c27d16c62236116b0f0e49a3c84ec Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Fri, 15 Nov 2024 11:43:10 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7(backend)=20add=20FRONTEND=5FTHEME?= =?UTF-8?q?=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The frontend need to know the theme to be used, so we need to add a new setting to the backend, in order to expose this value to the frontend. --- env.d/development/common.dist | 3 +++ src/backend/core/api/viewsets.py | 3 ++- src/backend/core/tests/test_api_config.py | 20 ++++++++++++-------- src/backend/impress/settings.py | 5 +++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/env.d/development/common.dist b/env.d/development/common.dist index 9e8e8253..95c8f8f7 100644 --- a/env.d/development/common.dist +++ b/env.d/development/common.dist @@ -48,3 +48,6 @@ AI_MODEL=llama # Collaboration COLLABORATION_SERVER_URL=ws://localhost:4444 + +# Frontend +FRONTEND_THEME=dsfr diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index 394dbc7d..ad5acec0 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -901,8 +901,9 @@ class ConfigView(views.APIView): Return a dictionary of public settings. """ array_settings = [ - "ENVIRONMENT", "COLLABORATION_SERVER_URL", + "ENVIRONMENT", + "FRONTEND_THEME", "MEDIA_BASE_URL", "LANGUAGES", "LANGUAGE_CODE", diff --git a/src/backend/core/tests/test_api_config.py b/src/backend/core/tests/test_api_config.py index 3c1daab6..850001bc 100644 --- a/src/backend/core/tests/test_api_config.py +++ b/src/backend/core/tests/test_api_config.py @@ -16,9 +16,10 @@ pytestmark = pytest.mark.django_db @override_settings( - SENTRY_DSN="https://sentry.test/123", - MEDIA_BASE_URL="http://testserver/", COLLABORATION_SERVER_URL="http://testcollab/", + FRONTEND_THEME="test-theme", + MEDIA_BASE_URL="http://testserver/", + SENTRY_DSN="https://sentry.test/123", ) def test_api_config_anonymous(): """Anonymous users should be allowed to get the configuration.""" @@ -27,18 +28,20 @@ def test_api_config_anonymous(): assert response.status_code == HTTP_200_OK assert response.json() == { "COLLABORATION_SERVER_URL": "http://testcollab/", + "ENVIRONMENT": "test", + "FRONTEND_THEME": "test-theme", "LANGUAGES": [["en-us", "English"], ["fr-fr", "French"], ["de-de", "German"]], "LANGUAGE_CODE": "en-us", - "SENTRY_DSN": "https://sentry.test/123", - "ENVIRONMENT": "test", "MEDIA_BASE_URL": "http://testserver/", + "SENTRY_DSN": "https://sentry.test/123", } @override_settings( - SENTRY_DSN="https://sentry.test/123", - MEDIA_BASE_URL="http://testserver/", COLLABORATION_SERVER_URL="http://testcollab/", + FRONTEND_THEME="test-theme", + MEDIA_BASE_URL="http://testserver/", + SENTRY_DSN="https://sentry.test/123", ) def test_api_config_authenticated(): """Authenticated users should be allowed to get the configuration.""" @@ -51,9 +54,10 @@ def test_api_config_authenticated(): assert response.status_code == HTTP_200_OK assert response.json() == { "COLLABORATION_SERVER_URL": "http://testcollab/", + "ENVIRONMENT": "test", + "FRONTEND_THEME": "test-theme", + "MEDIA_BASE_URL": "http://testserver/", "LANGUAGES": [["en-us", "English"], ["fr-fr", "French"], ["de-de", "German"]], "LANGUAGE_CODE": "en-us", "SENTRY_DSN": "https://sentry.test/123", - "ENVIRONMENT": "test", - "MEDIA_BASE_URL": "http://testserver/", } diff --git a/src/backend/impress/settings.py b/src/backend/impress/settings.py index 25bf9c4a..8ba26fdf 100755 --- a/src/backend/impress/settings.py +++ b/src/backend/impress/settings.py @@ -382,6 +382,11 @@ class Base(Configuration): None, environ_name="COLLABORATION_SERVER_URL", environ_prefix=None ) + # Frontend + FRONTEND_THEME = values.Value( + None, environ_name="FRONTEND_THEME", environ_prefix=None + ) + # Easy thumbnails THUMBNAIL_EXTENSION = "webp" THUMBNAIL_TRANSPARENCY_EXTENSION = "webp"