diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index 5fbd4ce..d45ecb9 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -504,7 +504,7 @@ class ConfigView(views.APIView): GET /api/v1.0/config/ Return a dictionary of public settings. """ - array_settings = ["LANGUAGES", "FEATURES", "RELEASE"] + array_settings = ["LANGUAGES", "FEATURES", "RELEASE", "COMMIT"] dict_settings = {} for setting in array_settings: dict_settings[setting] = getattr(settings, setting) diff --git a/src/backend/core/tests/test_api_config.py b/src/backend/core/tests/test_api_config.py index d213291..daf7767 100644 --- a/src/backend/core/tests/test_api_config.py +++ b/src/backend/core/tests/test_api_config.py @@ -20,6 +20,7 @@ def test_api_config_anonymous(): assert response.status_code == HTTP_200_OK assert response.json() == { "LANGUAGES": [["en-us", "English"], ["fr-fr", "French"]], + "COMMIT": "NA", "FEATURES": { "CONTACTS_DISPLAY": True, "CONTACTS_CREATE": True, @@ -42,6 +43,7 @@ def test_api_config_authenticated(): assert response.status_code == HTTP_200_OK assert response.json() == { "LANGUAGES": [["en-us", "English"], ["fr-fr", "French"]], + "COMMIT": "NA", "FEATURES": { "CONTACTS_DISPLAY": True, "CONTACTS_CREATE": True, diff --git a/src/backend/people/settings.py b/src/backend/people/settings.py index 8c99afa..6614af9 100755 --- a/src/backend/people/settings.py +++ b/src/backend/people/settings.py @@ -44,6 +44,17 @@ def get_release(): return "NA" # Default: not available +def get_commit(): + """ + Get the current commit of the application + """ + try: + with open(os.path.join(BASE_DIR, "version.json"), encoding="utf8") as version: + return json.load(version)["commit"] + except FileNotFoundError: + return "NA" # Default: not available + + class Base(Configuration): """ This is the base configuration every configuration (aka environment) should inherit from. It @@ -488,6 +499,14 @@ class Base(Configuration): """ return get_release() + # pylint: disable=invalid-name + @property + def COMMIT(self): + """ + Return the commit information. + """ + return get_commit() + # pylint: disable=invalid-name @property def PARLER_LANGUAGES(self): diff --git a/src/frontend/apps/desk/src/__tests__/pages.test.tsx b/src/frontend/apps/desk/src/__tests__/pages.test.tsx index dbd847c..b4798f0 100644 --- a/src/frontend/apps/desk/src/__tests__/pages.test.tsx +++ b/src/frontend/apps/desk/src/__tests__/pages.test.tsx @@ -23,6 +23,7 @@ describe('Page', () => { useConfigStore.setState({ config: { RELEASE: '1.0.0', + COMMIT: 'NA', FEATURES: { TEAMS_DISPLAY: true }, LANGUAGES: [], }, @@ -37,6 +38,7 @@ describe('Page', () => { useConfigStore.setState({ config: { RELEASE: '1.0.0', + COMMIT: 'NA', FEATURES: { TEAMS_DISPLAY: false }, LANGUAGES: [], }, diff --git a/src/frontend/apps/desk/src/core/__tests__/MainLayout.test.tsx b/src/frontend/apps/desk/src/core/__tests__/MainLayout.test.tsx index ca3f521..019a74a 100644 --- a/src/frontend/apps/desk/src/core/__tests__/MainLayout.test.tsx +++ b/src/frontend/apps/desk/src/core/__tests__/MainLayout.test.tsx @@ -20,6 +20,7 @@ describe('MainLayout', () => { useConfigStore.setState({ config: { RELEASE: '1.0.0', + COMMIT: 'NA', FEATURES: { TEAMS_DISPLAY: true }, LANGUAGES: [], }, @@ -57,6 +58,7 @@ describe('MainLayout', () => { useConfigStore.setState({ config: { RELEASE: '1.0.0', + COMMIT: 'NA', FEATURES: { TEAMS_DISPLAY: true }, LANGUAGES: [], }, @@ -95,6 +97,7 @@ describe('MainLayout', () => { useConfigStore.setState({ config: { RELEASE: '1.0.0', + COMMIT: 'NA', FEATURES: { TEAMS_DISPLAY: false }, LANGUAGES: [], }, diff --git a/src/frontend/apps/desk/src/core/config/types.ts b/src/frontend/apps/desk/src/core/config/types.ts index ca23166..20044b2 100644 --- a/src/frontend/apps/desk/src/core/config/types.ts +++ b/src/frontend/apps/desk/src/core/config/types.ts @@ -1,6 +1,7 @@ export interface Config { LANGUAGES: [string, string][]; RELEASE: string; + COMMIT: string; FEATURES: { TEAMS_DISPLAY: boolean; }; diff --git a/src/frontend/apps/desk/src/features/footer/Footer.tsx b/src/frontend/apps/desk/src/features/footer/Footer.tsx index 95808c5..3c66cc3 100644 --- a/src/frontend/apps/desk/src/features/footer/Footer.tsx +++ b/src/frontend/apps/desk/src/features/footer/Footer.tsx @@ -5,6 +5,8 @@ import styled from 'styled-components'; import { Box, LogoGouv, StyledLink, Text } from '@/components'; import { useConfigStore } from '@/core'; +import frontVersion from '../../../version.json'; + import IconLink from './assets/external-link.svg'; const BlueStripe = styled.div` @@ -141,6 +143,11 @@ export const Footer = () => { ))} + + { ['en-us', 'English'], ['fr-fr', 'French'], ], + COMMIT: 'NA', FEATURES: { CONTACTS_CREATE: true, CONTACTS_DISPLAY: true,