From: Philipp Spitzer Date: Fri, 6 Aug 2021 21:19:52 +0000 (+0200) Subject: Further work on wikitext template for sledrun. X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wradmin.git/commitdiff_plain/cedf0a723df48ca40a2adf563e6241a7fff82dff Further work on wikitext template for sledrun. --- diff --git a/wradmin/template_helper.py b/wradmin/template_helper.py index b37571f..b9c1dda 100644 --- a/wradmin/template_helper.py +++ b/wradmin/template_helper.py @@ -1,7 +1,10 @@ +from typing import List from urllib.parse import quote_plus from flask import url_for, current_app import wrpylib.wrvalidators +from wrpylib.mwmarkup import create_template +from wrpylib.wrvalidators import LonLat, lonlat_to_str class PylonsHelper: @@ -59,3 +62,30 @@ class PylonsHelper: def public_transport(self, value): return wrpylib.wrvalidators.opt_public_transport_german_to_str(value) + + def json_position(self, value: dict) -> str: + lon_lat = LonLat(value['longitude'], value['latitude']) + return lonlat_to_str(lon_lat) + + def json_pos_ele_position(self, value: dict) -> str: + pos = value.get('position') + if pos is None: + return '' + return self.json_position(pos) + + def json_pos_ele_elevation(self, value: dict) -> str: + return value.get('elevation', '') + + def list_template(self, name: str, value: List[str]) -> str: + return str(create_template(name, value)) + + def json_template(self, value) -> str: + args = [] + kwargs = {} + for p in value.get('parameter', []): + v = p.get('value', '') + if 'key' in p: + kwargs[p['key']] = v + else: + args.append(v) + return str(create_template(value['name'], args, kwargs)) diff --git a/wradmin/templates/rodelbahn_view_wikitext.html b/wradmin/templates/rodelbahn_view_wikitext.html index 750ba62..a473aaf 100644 --- a/wradmin/templates/rodelbahn_view_wikitext.html +++ b/wradmin/templates/rodelbahn_view_wikitext.html @@ -104,9 +104,16 @@ == Anreise mit öffentlichen Verkehrsmitteln == {% if 'public_transport_description' in sledrun_json %}{{ sledrun_json['public_transport_description'] }} -{% else %}''Hier wird die Anreise mit öffentlichen Verkehrsmitteln beschrieben.'' -{% endif %} +{%- else %}''Hier wird die Anreise mit öffentlichen Verkehrsmitteln beschrieben.''{% endif %} +{% for pt_stop in sledrun_json.get('public_transport_stops', []) %} +* {{ h.list_template('Haltestelle', [pt_stop.get('name', ''), '', h.json_pos_ele_position(pt_stop.get('position', '')), h.json_pos_ele_elevation(pt_stop.get('position', ''))]) }} +{% for template_name in ['monitor_template', 'route_arrival_template', 'route_departure_template'] %} +{%- if template_name in pt_stop -%} +** {{ h.json_template(pt_stop[template_name]) }} +{% endif %} +{%- endfor %} +{%- endfor %} * {Haltestelle|Imst|Rastbühel/Hochbehälter|47.255415 N 10.738377 E|975}} ** {Fahrplan Abfahrtsmonitor VVT|Imst|Rastbühel/Hochbehälter|62295}} ** {Fahrplan Hinfahrt VVT|Imst|Rastbühel/Hochbehälter}}