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)