Added base-path support in URL generating features (#288)

Add the basepath dash url to the path generation for dynamicly generated
links.
This commit is contained in:
2023-10-29 20:40:40 +01:00
committed by GitHub
parent 6526549bdd
commit f72d606d18
4 changed files with 20 additions and 7 deletions

View File

@ -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(

View File

@ -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/<value>", title="Unternehmensdetails"
__name__, path_template="/unternehmensdetails/<value>", title="Unternehmensdetails"
)

View File

@ -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/<value>", title="Personendetails"
__name__, path_template="/personendetails/<value>", title="Personendetails"
)

View File

@ -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: