]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/commitdiff
Now rendering JSON map stored in the wiki.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Wed, 13 Oct 2021 21:36:29 +0000 (23:36 +0200)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Wed, 13 Oct 2021 21:36:29 +0000 (23:36 +0200)
wradmin/controllers/rodelbahn.py
wradmin/template_helper.py
wradmin/templates/rodelbahn_view_wikitext.html

index cd75bbe9ef8b608d5151b9603497161d6084588d..017da740225f4a1efabb851289fd3d725650c588 100644 (file)
@@ -1,6 +1,6 @@
 import json
 import subprocess
-import urllib.request
+import urllib.request, urllib.error
 from collections import OrderedDict
 from typing import Optional, Tuple, List
 
@@ -51,10 +51,20 @@ class RodelbahnController:
             abort(404)
         h = PylonsHelper()
         sledrun_json_url = h.sledrun_json_url(sledrun.page_title)
-        sledrun_json_page = urllib.request.urlopen(sledrun_json_url)
+        sledrun_json_page = urllib.request.urlopen(sledrun_json_url)  # might raise urllib.error.HTTPError
         sledrun_json_str = sledrun_json_page.read()
         sledrun_json = json.loads(sledrun_json_str)
 
+        sledrun_map_json = None
+        sledrun_map_url = h.sledrun_map_url(sledrun.page_title)
+        try:
+            sledrun_map_page = urllib.request.urlopen(sledrun_map_url)
+            sledrun_map_str = sledrun_map_page.read()
+            sledrun_map_json = json.loads(sledrun_map_str)
+        except urllib.error.HTTPError as e:
+            if e.code != 404:  # accept "not found" as map not being present
+                raise
+
         def markdown_to_mediawiki(markdown: str) -> str:
             return subprocess.check_output(['pandoc', '--to', 'mediawiki'], input=markdown, encoding='utf-8')
 
@@ -150,7 +160,8 @@ class RodelbahnController:
         rodelbahnbox = rodelbahnbox_to_str(sledrun_rbb_json)
         return render_template('rodelbahn_view_wikitext.html', sledrun=sledrun, sledrun_json=sledrun_json,
                                rodelbahnbox=rodelbahnbox, description=description, night_light=night_light,
-                               sled_rental_description=sled_rental_description, operator=betreiber())
+                               sled_rental_description=sled_rental_description, operator=betreiber(),
+                               sledrun_map_json=sledrun_map_json)
 
     def json_edit(self, sledrun_id):
         q = db.session.query(WrSledrunCache)
index b9c1dda9edaf10c0be36a833ba5554a60dc4fd45..f0e9ac0a5d2823f88dee36c9609244f2e9b99782 100644 (file)
@@ -1,9 +1,10 @@
-from typing import List
+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
 
 
@@ -38,12 +39,30 @@ class PylonsHelper:
             url += '&action=raw'
         return url
 
-    def sledrun_json_url(self, page_title, raw: bool = True):
-        url = f'{self.mediawiki_index_url()}?title={quote_plus(page_title)}/Rodelbahn.json'
+    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 "https://maps.google.at/maps?q=%.6f,%.6f" % (latitude, longitude)
index e340b3c1e248c0899ee3e76679a98bd9cae63f6d..55d24e29223930f6c3abff6a46dd866f6aa7ceba 100644 (file)
 
 
 == Landkarte ==
-{%- filter forceescape %}
-<wrmap lat="47.25495005" lon="10.713226985" zoom="14">
-
-<gasthaus name="Latschenhütte" wiki="Latschenhütte (Gasthaus)">47.257628 N 10.688077 E</gasthaus>
-<parkplatz>47.255415 N 10.738377 E</parkplatz>
-
-<rodelbahn>
-47.257962 N 10.688081 E
-47.258005 N 10.688402 E
-47.257590 N 10.688706 E
-47.257189 N 10.689888 E
-47.256868 N 10.689642 E
-47.255072 N 10.691495 E
-47.254187 N 10.692994 E
-47.252399 N 10.694954 E
-47.252205 N 10.696199 E
-47.252398 N 10.698193 E
-47.251425 N 10.695816 E
-47.251646 N 10.700060 E
-47.252280 N 10.701494 E
-47.252711 N 10.701935 E
-47.253288 N 10.704018 E
-47.253649 N 10.704199 E
-47.253892 N 10.705659 E
-47.254662 N 10.707657 E
-47.255164 N 10.708073 E
-47.255730 N 10.708088 E
-47.256003 N 10.708921 E
-47.255401 N 10.710403 E
-47.256161 N 10.713536 E
-47.256524 N 10.713556 E
-47.256291 N 10.715532 E
-47.257742 N 10.720200 E
-47.257928 N 10.722706 E
-47.258556 N 10.724411 E
-47.258508 N 10.724764 E
-47.257824 N 10.724747 E
-47.255990 N 10.722698 E
-47.255682 N 10.724402 E
-47.254975 N 10.725161 E
-47.254403 N 10.725299 E
-47.253625 N 10.726169 E
-47.252756 N 10.729158 E
-47.253270 N 10.729620 E
-47.254430 N 10.734014 E
-47.255339 N 10.735147 E
-47.255382 N 10.735946 E
-47.255177 N 10.736435 E
-47.255478 N 10.738000 E
-</rodelbahn>
-
-<lift>
-47.241962 N 10.721678 E
-47.248786 N 10.693678 E
-</lift>
-
-</wrmap>
-{% endfilter %}{% raw %}{{Landkarte Legende}}<br/>{{GoogleMaps Hinweis}}{% endraw %}
-
+{% if sledrun_map_json is none -%}
+''leider ist derzeit keine [[Winterrodeln:Landkarte|Landkarte]] zu dieser Rodelbahn vorhanden''
+{%- else -%}
+{{ h.create_wrmap(sledrun_map_json) }}
+{% raw %}{{Landkarte Legende}}<br/>{{GoogleMaps Hinweis}}{% endraw %}
+{% endif %}
 
 == Anreise mit öffentlichen Verkehrsmitteln ==
 {% if 'public_transport_description' in sledrun_json %}{{ sledrun_json['public_transport_description'] }}