]> ToastFreeware Gitweb - philipp/winterrodeln/wrpylib.git/blobdiff - wrpylib/wrmwmarkup.py
Name of public_transport_stop was split.
[philipp/winterrodeln/wrpylib.git] / wrpylib / wrmwmarkup.py
index def51f1a74ddbe2f09d57ad82b178fc723c901f2..c609e70bf8f898e4e2ad5ca3d4a55abe1047ab57 100644 (file)
@@ -16,7 +16,7 @@ from wrpylib.wrvalidators import LonLat, opt_lonlat_from_str, opt_lonlat_to_str,
     opt_str_opt_comment_enum_to_str, lift_german_to_str, webauskunft_to_str, cachet_german_to_str, \
     opt_phone_comment_enum_to_str, lift_german_from_str, GASTHAUSBOX_DICT, opt_difficulty_german_from_str, \
     opt_avalanches_german_from_str, nightlightdays_from_str, opt_public_transport_german_from_str, \
-    opt_tristate_german_comment_from_str, rodelbahnbox_to_str, lonlat_to_str
+    opt_tristate_german_comment_from_str, rodelbahnbox_to_str, lonlat_to_str, opt_no_or_str_to_str
 
 
 def split_lon_lat(value: Optional[LonLat]) -> Union[LonLat, Tuple[None, None]]:
@@ -334,6 +334,16 @@ def create_wrmap(geojson: Dict) -> str:
     return xml.etree.ElementTree.tostring(wrmap_xml, encoding='utf-8').decode('utf-8')
 
 
+def markdown_to_mediawiki(markdown: str) -> str:
+    return subprocess.check_output(['pandoc', '--to', 'mediawiki'], input=markdown, encoding='utf-8')
+
+
+def german_bool(value: Union[bool, jinja2.Undefined]) -> Union[str, jinja2.Undefined]:
+    if jinja2.is_undefined(value):
+        return value
+    return wrpylib.wrvalidators.bool_german_to_str(value)
+
+
 class Jinja2Tools:
     def create_wrmap(self, geojson: Dict) -> str:
         return create_wrmap(geojson)
@@ -369,13 +379,12 @@ class Jinja2Tools:
 def create_sledrun_wiki(sledrun_json: Dict, map_json: Optional[Dict]) -> str:
     env = jinja2.Environment(
         loader=jinja2.PackageLoader("wrpylib"),
-        autoescape=jinja2.select_autoescape()
+        autoescape=jinja2.select_autoescape(),
     )
+    env.filters["from_markdown"] = markdown_to_mediawiki
+    env.filters["german_bool"] = german_bool
     template = env.get_template("sledrun_wiki.txt")
 
-    def markdown_to_mediawiki(markdown: str) -> str:
-        return subprocess.check_output(['pandoc', '--to', 'mediawiki'], input=markdown, encoding='utf-8')
-
     def position_to_lon_lat(value: Optional[dict]) -> Optional[LonLat]:
         if value is not None:
             lon = value.get('longitude')
@@ -439,7 +448,7 @@ def create_sledrun_wiki(sledrun_json: Dict, map_json: Optional[Dict]) -> str:
         ('Länge', sledrun_json.get('length')),
         ('Schwierigkeit', opt_difficulty_german_from_str(sledrun_json.get('difficulty', ''))),
         ('Lawinen', opt_avalanches_german_from_str(sledrun_json.get('avalanches', ''))),
-        ('Betreiber', betreiber()),
+        ('Betreiber', opt_no_or_str_to_str((sledrun_json.get('has_operator'), sledrun_json.get('operator')))),
         ('Öffentliche Anreise', opt_public_transport_german_from_str(sledrun_json.get('public_transport', ''))),
         ('Aufstieg möglich', sledrun_json.get('walkup_possible')),
         ('Aufstieg getrennt', opt_tristate_german_comment_from_str(sledrun_json.get('walkup_separate', ''))),
@@ -456,18 +465,8 @@ def create_sledrun_wiki(sledrun_json: Dict, map_json: Optional[Dict]) -> str:
         ('Forumid', sledrun_json.get('forum_id'))
     ])
 
-    def get_markdown_field(key: str) -> str:
-        if key in sledrun_json:
-            return markdown_to_mediawiki(sledrun_json[key])
-        return ''
-
-    description = get_markdown_field('description').strip()
-    night_light = get_markdown_field('night_light').strip()
-    sled_rental_description = get_markdown_field('sled_rental_description').strip()
-
     rodelbahnbox = rodelbahnbox_to_str(sledrun_rbb_json)
 
     return template.render(sledrun_json=sledrun_json,
-                           rodelbahnbox=rodelbahnbox, description=description, night_light=night_light,
-                           sled_rental_description=sled_rental_description, operator=betreiber(),
-                           map_json=map_json, h=Jinja2Tools())
+                           rodelbahnbox=rodelbahnbox,
+                           map_json=map_json, h=Jinja2Tools(), **sledrun_json)