]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blobdiff - wradmin/template_helper.py
Now rendering JSON map stored in the wiki.
[philipp/winterrodeln/wradmin.git] / wradmin / template_helper.py
index 446c315fcc11253c8ee7862b5e96c15efa6fa0f2..f0e9ac0a5d2823f88dee36c9609244f2e9b99782 100644 (file)
@@ -1,5 +1,11 @@
-from flask import url_for
+from typing import List, Dict
+from urllib.parse import quote_plus
+
+from flask import url_for, current_app
 import wrpylib.wrvalidators
+from wrpylib.mwmarkup import create_template
+from wrpylib.wrmwmarkup import create_wrmap
+from wrpylib.wrvalidators import LonLat, lonlat_to_str
 
 
 class PylonsHelper:
@@ -16,17 +22,50 @@ class PylonsHelper:
         """Creates a link to the specified page in the www.winterrodeln.org wiki"""
         if page_title is None:
             page_title = 'Hauptseite'
-        return 'http://www.winterrodeln.org/wiki/' + page_title
+        return current_app.config['MEDIAWIKI_WIKI'] + '/' + page_title
 
     def forum(self, forum=None):
         """Creates a link to the specified forum. If no id is given, a general link is created."""
         if forum is None:
-            return 'http://winterrodeln-forum.org/'
-        return 'http://winterrodeln-forum.org/viewforum.php?f={}'.format(forum)
+            return 'https://winterrodeln-forum.org/'
+        return 'https://winterrodeln-forum.org/viewforum.php?f={}'.format(forum)
+
+    def mediawiki_index_url(self):
+        return f'{current_app.config["MEDIAWIKI_ROOT"]}/index.php'
+
+    def sledrun_json_schema_url(self, raw: bool = True):
+        url = f'{self.mediawiki_index_url()}?title=Winterrodeln:Datenschema/Rodelbahn/V1.json'
+        if raw:
+            url += '&action=raw'
+        return url
+
+    def sledrun_json_title(self, page_title: str) -> str:
+        return f'{page_title}/Rodelbahn.json'
+
+    def sledrun_json_url(self, page_title, raw: bool = True) -> str:
+        json_page_title = self.sledrun_json_title(page_title)
+        url = f'{self.mediawiki_index_url()}?title={quote_plus(json_page_title)}'
+        if raw:
+            url += '&action=raw'
+        return url
+
+    def sledrun_map_title(self, page_title: str) -> str:
+        return f'{page_title}/Landkarte.json'
+
+    def sledrun_map_url(self, page_title, raw: bool = True) -> str:
+        map_page_title = self.sledrun_map_title(page_title)
+        url = f'{self.mediawiki_index_url()}?title={quote_plus(map_page_title)}'
+        if raw:
+            url += '&action=raw'
+        print(url)
+        return url
+
+    def create_wrmap(self, geojson: Dict) -> str:
+        return create_wrmap(geojson)
 
     def google_maps(self, latitude, longitude):
         """Builds an URL like http://maps.google.at/maps?q=47.200607,11.260007"""
-        return "http://maps.google.at/maps?q=%.6f,%.6f" % (latitude, longitude)
+        return "https://maps.google.at/maps?q=%.6f,%.6f" % (latitude, longitude)
 
     def bool(self, value):
         """Takes a bool value and creates a German representation"""
@@ -42,3 +81,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))