From 896136dcee8abc4cd2fb6497758d166496700e77 Mon Sep 17 00:00:00 2001 From: Philipp Horstenkamp Date: Thu, 26 Oct 2023 17:32:17 +0200 Subject: [PATCH] Added an about page (#251) This page was added since it is sometimes difficult to say which version was deployed on an server. This should allow an easy lookup on the server and make it comparable with what is expected. --- .../ui/pages/about.py | 48 +++++++++++++++++++ tests/ui/about_test.py | 15 ++++++ 2 files changed, 63 insertions(+) create mode 100644 src/aki_prj23_transparenzregister/ui/pages/about.py create mode 100644 tests/ui/about_test.py diff --git a/src/aki_prj23_transparenzregister/ui/pages/about.py b/src/aki_prj23_transparenzregister/ui/pages/about.py new file mode 100644 index 0000000..729c89e --- /dev/null +++ b/src/aki_prj23_transparenzregister/ui/pages/about.py @@ -0,0 +1,48 @@ +"""A page giving some details about this application including versioning.""" +import os +from functools import lru_cache +from importlib.metadata import metadata +from typing import Final + +import dash +from dash import html + +from aki_prj23_transparenzregister.ui import header_elements + +dash.register_page(__name__, path_template="/about/", title="About") + +_DISTRIBUTION_METADATA = metadata("aki-prj23-transparenzregister") + +__author__: Final[str] = _DISTRIBUTION_METADATA["Author"] +__email__: Final[str] = _DISTRIBUTION_METADATA["Author-email"] +__version__: Final[str] = _DISTRIBUTION_METADATA["Version"] + + +@lru_cache +def layout() -> list[html]: + """Defines the layout of the about page. + + Returns: + A list of html element making up this page. + """ + return [ + header_elements.create_selection_header("About"), + html.H3("About Us"), + html.H3("Description"), + html.P(_DISTRIBUTION_METADATA["Summary"]), + html.H3("Key Features"), + html.Ul( + [ + html.Li("Some feature."), + ] + ), + html.H3("Version"), + html.Ul( + [ + html.Li(f"Software Version: {__version__}"), + html.Li( + f"Build from GiT Revision: {os.getenv('GIT_HASH', 'Running locally'), }" + ), + ] + ), + ] diff --git a/tests/ui/about_test.py b/tests/ui/about_test.py new file mode 100644 index 0000000..beaa8bb --- /dev/null +++ b/tests/ui/about_test.py @@ -0,0 +1,15 @@ +"""Tests if the about page can be created.""" +from dash.development.base_component import Component + +from aki_prj23_transparenzregister.ui import app +from aki_prj23_transparenzregister.ui.pages import about + +_ = app + + +def test_layout() -> None: + """Checks if the about page can be created.""" + result = about.layout() + assert isinstance(result, list) + for e in result: + assert isinstance(e, Component)