From f72d606d182d8a74c29d22ac4e89de0589169513 Mon Sep 17 00:00:00 2001 From: Philipp Horstenkamp Date: Sun, 29 Oct 2023 20:40:40 +0100 Subject: [PATCH] Added base-path support in URL generating features (#288) Add the basepath dash url to the path generation for dynamicly generated links. --- src/aki_prj23_transparenzregister/ui/app.py | 12 +++++++++--- .../ui/pages/company.py | 2 +- src/aki_prj23_transparenzregister/ui/pages/person.py | 2 +- tests/ui/app_test.py | 11 +++++++++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/aki_prj23_transparenzregister/ui/app.py b/src/aki_prj23_transparenzregister/ui/app.py index 398e929..28d1249 100644 --- a/src/aki_prj23_transparenzregister/ui/app.py +++ b/src/aki_prj23_transparenzregister/ui/app.py @@ -1,5 +1,6 @@ """Main Dash app.""" import argparse +import os import sys import dash @@ -56,6 +57,8 @@ def go_to_home(click: int) -> str: Returns: Returns the href of the home page. """ + if home_path := os.getenv("DASH_URL_BASE_PATHNAME"): + return f"{home_path}" return "/" @@ -74,11 +77,14 @@ def go_to_detail_page(id: str) -> str: Returns the href of the company page. """ if id.startswith("p_"): - page = "/Personendetails/" + page = "personendetails" if id.startswith("c_"): - page = "/Unternehmensdetails/" + page = "unternehmensdetails" chosen_id = id.split("_", 1)[1] - return f"{page}{chosen_id}" + url = f"/{page}/{chosen_id}" + if prefix := os.getenv("DASH_URL_BASE_PATHNAME"): + return f"{prefix}{url}".replace("//", "/").replace("//", "/") + return url @app.callback( diff --git a/src/aki_prj23_transparenzregister/ui/pages/company.py b/src/aki_prj23_transparenzregister/ui/pages/company.py index f86bb0c..5e04336 100644 --- a/src/aki_prj23_transparenzregister/ui/pages/company.py +++ b/src/aki_prj23_transparenzregister/ui/pages/company.py @@ -10,7 +10,7 @@ from aki_prj23_transparenzregister.ui import ( from aki_prj23_transparenzregister.ui.session_handler import SessionHandler dash.register_page( - __name__, path_template="/Unternehmensdetails/", title="Unternehmensdetails" + __name__, path_template="/unternehmensdetails/", title="Unternehmensdetails" ) diff --git a/src/aki_prj23_transparenzregister/ui/pages/person.py b/src/aki_prj23_transparenzregister/ui/pages/person.py index 249e08a..9758ef8 100644 --- a/src/aki_prj23_transparenzregister/ui/pages/person.py +++ b/src/aki_prj23_transparenzregister/ui/pages/person.py @@ -6,7 +6,7 @@ from aki_prj23_transparenzregister.ui import data_elements, header_elements from aki_prj23_transparenzregister.ui.session_handler import SessionHandler dash.register_page( - __name__, path_template="/Personendetails/", title="Personendetails" + __name__, path_template="/personendetails/", title="Personendetails" ) diff --git a/tests/ui/app_test.py b/tests/ui/app_test.py index 6c29614..10c1c7d 100644 --- a/tests/ui/app_test.py +++ b/tests/ui/app_test.py @@ -31,10 +31,17 @@ def test_go_to_home() -> None: assert output == "/" -def test_go_to_detail_page() -> None: +def test_go_to_detail_page1(monkeypatch: MonkeyPatch) -> None: + """Checks if the go_to_detail_page callback yields a result.""" + monkeypatch.setenv("DASH_URL_BASE_PATHNAME", "/monkey_path/") + output = app.go_to_detail_page("c_1") + assert output == "/monkey_path/unternehmensdetails/1" + + +def test_go_to_detail_page2() -> None: """Checks if the go_to_detail_page callback yields a result.""" output = app.go_to_detail_page("c_1") - assert output == "/Unternehmensdetails/1" + assert output == "/unternehmensdetails/1" def test_main_of_app(monkeypatch: MonkeyPatch) -> None: