From c6ac10716a8d2dfe222fb2b1639b8486c93687ce Mon Sep 17 00:00:00 2001 From: cccs-joel Date: Mon, 13 Sep 2021 12:59:08 -0500 Subject: [PATCH] feat: show build number value in the About if present in the config (#14955) --- superset-frontend/src/components/Menu/Menu.test.tsx | 7 +++++-- superset-frontend/src/components/Menu/Menu.tsx | 1 + superset-frontend/src/components/Menu/MenuRight.tsx | 9 ++++++++- superset/config.py | 4 ++++ superset/views/base.py | 2 ++ 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/superset-frontend/src/components/Menu/Menu.test.tsx b/superset-frontend/src/components/Menu/Menu.test.tsx index 212521bd4e..f3a2fd1ff5 100644 --- a/superset-frontend/src/components/Menu/Menu.test.tsx +++ b/superset-frontend/src/components/Menu/Menu.test.tsx @@ -103,6 +103,7 @@ const mockedProps = { locale: 'en', version_string: '1.0.0', version_sha: 'randomSHA', + build_number: 'randomBuildNumber', }, settings: [ { @@ -280,10 +281,10 @@ test('should render the Profile link when available', async () => { expect(profile).toHaveAttribute('href', user_profile_url); }); -test('should render the About section and version_string or sha when available', async () => { +test('should render the About section and version_string, sha or build_number when available', async () => { const { data: { - navbar_right: { version_sha, version_string }, + navbar_right: { version_sha, version_string, build_number }, }, } = mockedProps; @@ -292,9 +293,11 @@ test('should render the About section and version_string or sha when available', const about = await screen.findByText('About'); const version = await screen.findByText(`Version: ${version_string}`); const sha = await screen.findByText(`SHA: ${version_sha}`); + const build = await screen.findByText(`Build: ${build_number}`); expect(about).toBeInTheDocument(); expect(version).toBeInTheDocument(); expect(sha).toBeInTheDocument(); + expect(build).toBeInTheDocument(); }); test('should render the Documentation link when available', async () => { diff --git a/superset-frontend/src/components/Menu/Menu.tsx b/superset-frontend/src/components/Menu/Menu.tsx index 098aa3acdd..13d19fb269 100644 --- a/superset-frontend/src/components/Menu/Menu.tsx +++ b/superset-frontend/src/components/Menu/Menu.tsx @@ -44,6 +44,7 @@ export interface NavBarProps { bug_report_url?: string; version_string?: string; version_sha?: string; + build_number?: string; documentation_url?: string; languages: Languages; show_language_picker: boolean; diff --git a/superset-frontend/src/components/Menu/MenuRight.tsx b/superset-frontend/src/components/Menu/MenuRight.tsx index 35d2cb0fcf..1626713f54 100644 --- a/superset-frontend/src/components/Menu/MenuRight.tsx +++ b/superset-frontend/src/components/Menu/MenuRight.tsx @@ -146,7 +146,9 @@ const RightMenu = ({ , ]} - {(navbarRight.version_string || navbarRight.version_sha) && [ + {(navbarRight.version_string || + navbarRight.version_sha || + navbarRight.build_number) && [ ,
@@ -165,6 +167,11 @@ const RightMenu = ({ SHA: {navbarRight.version_sha}
)} + {navbarRight.build_number && ( +
+ Build: {navbarRight.build_number} +
+ )}
, ]} diff --git a/superset/config.py b/superset/config.py index 7ccb695426..c4b3a661a5 100644 --- a/superset/config.py +++ b/superset/config.py @@ -112,6 +112,10 @@ VERSION_STRING = _try_json_readversion(VERSION_INFO_FILE) or _try_json_readversi VERSION_SHA_LENGTH = 8 VERSION_SHA = _try_json_readsha(VERSION_INFO_FILE, VERSION_SHA_LENGTH) +# Build number is shown in the About section if available. This +# can be replaced at build time to expose build information. +BUILD_NUMBER = None + # default viz used in chart explorer DEFAULT_VIZ_TYPE = "table" diff --git a/superset/views/base.py b/superset/views/base.py index 61bd312fb6..9d27861e5f 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -309,6 +309,7 @@ def menu_data() -> Dict[str, Any]: brand_text = appbuilder.app.config["LOGO_RIGHT_TEXT"] if callable(brand_text): brand_text = brand_text() + build_number = appbuilder.app.config["BUILD_NUMBER"] return { "menu": menu, "brand": { @@ -326,6 +327,7 @@ def menu_data() -> Dict[str, Any]: "documentation_url": appbuilder.app.config["DOCUMENTATION_URL"], "version_string": appbuilder.app.config["VERSION_STRING"], "version_sha": appbuilder.app.config["VERSION_SHA"], + "build_number": build_number, "languages": languages, "show_language_picker": len(languages.keys()) > 1, "user_is_anonymous": g.user.is_anonymous,