{% block content %}
== Allgemeines ==
{{ rodelbahnbox }}
-{{ description }}
+{{ description | default("*Hier wird die Rodelbahn allgemein beschrieben.*") | from_markdown | trim }}
{% raw %}
* {{Position oben}}
* {{Position unten}}
* {{Bahnlänge}}
* {{Gehzeit}}
{% endraw -%}
-* '''Beleuchtung''': {{ night_light }}
-* '''Rodelverleih''': {{ sled_rental_description }}
-* '''Schneelage - Auskunft''':{% for info in sledrun_json.get('info_phone', []) %}
-** {{ info['phone'] }} ({{ info['name'] }}){% endfor %}{% for info in sledrun_json.get('info_web', []) %}
-** {% if 'text' in info %}[{{ info['url'] }} {{ info['text'] }}]{% else %}{{ info['url'] }}{% endif %}{% endfor %}
+* '''Beleuchtung''': {{ nightlight_description | default( nightlight_possible | default('*Unbekannt*') ) | from_markdown | trim }}
+* '''Rodelverleih''': {{ sled_rental_description | default( sled_rental_direct | german_bool | default( '*Unbekannt*' ) ) | from_markdown | trim }}
+* '''Schneelage - Auskunft''':
+{%- for info in info_phone %}
+** {{ info.phone }} ({{ info.name }})
+{%- endfor %}
+{%- for info in info_web %}
+** {% if info.text %}[{{ info.url }} {{ info.text }}]{% else %}{{ info.url }}{% endif %}
+{%- endfor %}
* '''Betreiber''': {{ operator }}
-* '''Hütten''':{% for info in sledrun_json.get('gastronomy', []) %}
-** {% if 'wr_page' in info -%}
- {% if 'name' in info %}[[{{ info['wr_page']['title'] }}|{{ info['name'] }}]]
- {%- else %}{{ info['wr_page'] }}{% endif -%}
+* '''Hütten''':
+{%- for info in gastronomy %}
+** {% if info.wr_page -%}
+ {% if info.name %}[[{{ info.wr_page.title }}|{{ info.name }}]]
+ {%- else %}{{ info.wr_page }}{% endif -%}
{% endif -%}
- {% endfor %}
+{% endfor %}
* '''Andere Rodelbahnen''':
-** [[Untermarkter Alm]]
-* '''Siehe auch''':{% for info in sledrun_json.get('see_also', []) %}
-** {% if 'text' in info %}[{{ info['url'] }} {{ info['text'] }}]{% else %}{{ info['url'] }}{% endif %}{% endfor %}
+{%- for page in sledrun_list %}
+** [[{{ page.title }}{% if page.name %}|{{ page.name }}{% endif %}]]
+{% endfor -%}
+* '''Siehe auch''':
+{%- for info in see_also %}
+** {% if info.text %}[{{ info.url }} {{ info.text }}]{% else %}{{ info.url }}{% endif %}
+{%- endfor %}
{% raw %}{{Buttonleiste{% endraw -%}
-|Bericht={% if sledrun_json.get('allow_reports', True) %}Ja{% else %}Nein{% endif -%}
-{% if 'forum_id' in sledrun_json %}|ForumId={{ sledrun_json['forum_id'] }}{% endif -%}
-{% if 'position' in sledrun_json %}|Wetter=Ja{% endif -%}
-|Korrektur=Seite{% if 'correction_email' in sledrun_json %}|Korrektur_To={{ sledrun_json['correction_email'] }}{% endif -%}
-{% if 'freizeitticket_tyrol' in sledrun_json %}|Freizeitticket=Ja{% endif -%}
-{% if 'regio_card_tyrol' in sledrun_json %}|Regiocard=Ja{% endif -%}}}
+|Bericht={{ allow_reports | default(true) | german_bool }}
+{%- if forum_id %}|ForumId={{ forum_id }}{% endif %}
+{%- if position %}|Wetter=Ja{% endif -%}
+|Korrektur=Seite{% if correction_email %}|Korrektur_To={{ correction_email }}{% endif -%}
+{% if freizeitticket_tyrol %}|Freizeitticket=Ja{% endif -%}
+{% if regio_card_tyrol %}|Regiocard=Ja{% endif -%}}}
{% raw %}{{Clear}}{% endraw %}
{%- else -%}
{{ h.create_wrmap(map_json) }}
{% raw %}{{Landkarte Legende}}<br/>{{GoogleMaps Hinweis}}{% endraw %}
-{% endif %}
+{%- endif %}
+
== 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 %}
+{% if public_transport_description -%}
+{{ public_transport_description | from_markdown | trim }}
+{%- 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', ''))]) }}
== Anreise mit dem Auto ==
-{% if 'car_description' in sledrun_json %}{{ sledrun_json.car_description }}
-{%- else %}''Hier wird die Anreise mit dem Auto beschrieben.''{% endif %}
+{% if car_description -%}
+{{ car_description | from_markdown | trim }}
+{%- else -%}
+''Hier wird die Anreise mit dem Auto beschrieben.''
+{%- endif %}
{% for parking in sledrun_json.car_parking -%}
* '''Parkplatz''': {{ h.list_template('Parkplatz', [h.json_pos_ele_position(parking.position), h.json_pos_ele_elevation(parking.position)]) }}
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]]:
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)
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')
('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', ''))),
('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)