]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/commitdiff
Further work on wikitext template for sledrun.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Fri, 6 Aug 2021 21:19:52 +0000 (23:19 +0200)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Fri, 6 Aug 2021 21:19:52 +0000 (23:19 +0200)
wradmin/template_helper.py
wradmin/templates/rodelbahn_view_wikitext.html

index b37571f761b6b314e9ed23affa2d1d914be88e1b..b9c1dda9edaf10c0be36a833ba5554a60dc4fd45 100644 (file)
@@ -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))
index 750ba62fca3d7069529f464794bf8cc6cdd2f2a6..a473aafbdb38cc1c75a44641154c4a9c807565e4 100644 (file)
 
 == 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}}