From 039e2905ddd625e8b1f358d76624ce0333f5bf9e Mon Sep 17 00:00:00 2001 From: Markus Zimmerberger Date: Fri, 11 Sep 2026 16:04:53 +0200 Subject: [PATCH] Toggle map-show --- README.md | 13 ++++++++++ app.py | 4 +++ config.py | 14 ++++++++++ pbt.env.example | 4 +++ templates/add_entry.html | 28 ++++++++++++-------- templates/dashboard.html | 56 +++++++++++++++++++++++----------------- 6 files changed, 84 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 793320b..d1cbae6 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,19 @@ python scripts/fetch_stops.py # überschreibt data/stops_at.csv.gz flask import-stops ``` +## Kartenvorschau (optional, standardmäßig aus) + +Trip-Formular und „Meine Fahrten" können eine kleine Leaflet/OSM-Karte mit den +gewählten Halten zeigen (Luftlinie, keine echte Streckenführung – dafür fehlen +uns die Routengeometrien). Standardmäßig **aus**, da das ohne echte Strecken +wenig Mehrwert bringt. Aktivieren mit: + +```bash +export PBT_SHOW_MAP=true +``` + +bzw. in `/etc/pbt/pbt.env` die Zeile `PBT_SHOW_MAP=true` setzen (s. u.). + ## Produktivbetrieb mit systemd + Gunicorn 1. Projekt nach `/opt/pbt` kopieren, virtuelle Umgebung dort anlegen (s. oben). diff --git a/app.py b/app.py index 2b4ac63..6026723 100644 --- a/app.py +++ b/app.py @@ -27,6 +27,10 @@ def create_app(): with app.app_context(): db.create_all() + @app.context_processor + def inject_settings(): + return {"show_map": app.config["SHOW_MAP"]} + register_routes(app) register_cli(app) return app diff --git a/config.py b/config.py index 98979a8..ba54122 100644 --- a/config.py +++ b/config.py @@ -1,5 +1,13 @@ import os + +def _bool_env(name: str, default: bool) -> bool: + raw = os.environ.get(name) + if raw is None: + return default + return raw.strip().lower() in ("1", "true", "yes", "on") + + class Config: # Beispiel: postgresql://pbt_app:PASSWORT@10.10.10.x/pbt SQLALCHEMY_DATABASE_URI = os.environ.get( @@ -8,3 +16,9 @@ class Config: ) SQLALCHEMY_TRACK_MODIFICATIONS = False SECRET_KEY = os.environ.get("PBT_SECRET_KEY", "bitte-in-produktion-aendern") + + # Route preview map (Leaflet/OSM) on the trip form and "Meine Fahrten". + # Off by default: without real route geometry it only draws a straight + # line between stops, which isn't worth the extra page weight/CDN calls + # for most setups. Set PBT_SHOW_MAP=true to turn it on. + SHOW_MAP = _bool_env("PBT_SHOW_MAP", True) diff --git a/pbt.env.example b/pbt.env.example index bfff790..2659484 100644 --- a/pbt.env.example +++ b/pbt.env.example @@ -4,3 +4,7 @@ PBT_DATABASE_URL=postgresql://pbt_app:CHANGE_ME@postgres/pbt PBT_SECRET_KEY=CHANGE_ME_long_random_string + +# Off by default - straight-line-only map preview, not worth it for most +# setups. Set to true to show it on the trip form and "Meine Fahrten". +#PBT_SHOW_MAP=false diff --git a/templates/add_entry.html b/templates/add_entry.html index 15ac8e6..1bc6be7 100644 --- a/templates/add_entry.html +++ b/templates/add_entry.html @@ -1,8 +1,10 @@ {% extends "base.html" %} {% block title %}{{ "Fahrt bearbeiten" if fahrt else "Neue Fahrt" }} – PBT{% endblock %} {% block head %} - + {% if show_map %} + + {% endif %} {% endblock %} {% block content %}
@@ -54,12 +56,14 @@ if fahrt and fahrt.destination_stop else "" }}

-
- -

Wähle bekannte Haltestellen bei Von/Nach für eine Kartenvorschau.

- -

Luftlinie zwischen den Halten – keine echte Streckenführung.

-
+ {% if show_map %} +
+ +

Wähle bekannte Haltestellen bei Von/Nach für eine Kartenvorschau.

+ +

Luftlinie zwischen den Halten – keine echte Streckenführung.

+
+ {% endif %}
@@ -115,8 +119,10 @@
{% endblock %} {% block scripts %} - - + {% if show_map %} + + + {% endif %} {% endblock %} diff --git a/templates/dashboard.html b/templates/dashboard.html index 53bc29b..3123dc4 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -1,8 +1,10 @@ {% extends "base.html" %} {% block title %}Meine Fahrten – PBT{% endblock %} {% block head %} - + {% if show_map %} + + {% endif %} {% endblock %} {% block content %}

Meine Fahrten

@@ -40,18 +42,20 @@ {{ "★" * f.rating }}{{ "☆" * (5 - f.rating) }}
- + {% if show_map %} + + {% endif %} {% endif %} - -
- - -
-
- + {% if show_map %} + +
+ + +
+
+
+ {% endif %} {% endblock %} {% block scripts %} - - + {% if show_map %} + + + {% endif %} {% endblock %}