+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:
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))
== 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}}