]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blobdiff - wradmin/template_helper.py
Further work on wikitext template for sledrun.
[philipp/winterrodeln/wradmin.git] / wradmin / template_helper.py
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))