--- /dev/null
+#!/usr/bin/python
+import argparse
+from typing import List
+
+from wrpylib.json_tools import format_json
+from wrpylib.mwapi import WikiSite, page_json
+
+
+def update_wrgeojson(site: WikiSite, title: str):
+ wrgeojson_page = site.query_page(title)
+ if 'missing' in wrgeojson_page:
+ return
+ wrgeojson_json = page_json(wrgeojson_page)
+ wrgeojson_orig = wrgeojson_json.copy()
+
+ properties = wrgeojson_json.pop('properties', {}).copy()
+ if "simplified" not in properties:
+ properties["simplified"] = True
+ wrgeojson_json['properties'] = properties
+ if wrgeojson_json == wrgeojson_orig:
+ return
+
+ site(
+ 'edit',
+ pageid=wrgeojson_page['pageid'],
+ text=format_json(wrgeojson_json),
+ summary=f'Eigenschaft "simplified" eingefügt.',
+ minor=1,
+ bot=1,
+ baserevid=wrgeojson_page['revisions'][0]['revid'],
+ nocreate=1,
+ token=site.token(),
+ )
+
+
+def update_wiki_wrgeojson(ini_files: List[str]):
+ site = WikiSite(ini_files)
+ for result in site.query(list='categorymembers', cmtitle='Kategorie:Rodelbahn'):
+ for title in result['categorymembers']:
+ wrgeojson_title = f'{title["title"]}/Landkarte.json'
+ update_wrgeojson(site, wrgeojson_title)
+
+
+def main():
+ parser = argparse.ArgumentParser(description='Update wrgeojson Wiki pages: Add attribute "simplified".')
+ parser.add_argument('inifile', nargs='+', help='inifile.ini, see: https://www.winterrodeln.org/trac/wiki/ConfigIni')
+ args = parser.parse_args()
+ update_wiki_wrgeojson(args.inifile)
+
+
+if __name__ == '__main__':
+ main()
--- /dev/null
+"""Helper functions for using the MediaWiki API."""
+import configparser
+import json
+from functools import lru_cache
+from typing import List
+
+from pywikiapi import Site
+
+
+def page_json(page: dict) -> dict:
+ slot = page['revisions'][0]['slots']['main']
+ assert slot['contentmodel'] == 'json'
+ return json.loads(slot['content'])
+
+
+class WikiSite(Site):
+ def __init__(self, ini_files: List[str]):
+ config = configparser.ConfigParser()
+ config.read(ini_files)
+
+ api_url = config.get('robot', 'wikiurl')
+ api_user = config.get('robot', 'botpassword_bot')
+ api_password = config.get('robot', 'botpassword_password')
+ super().__init__(api_url)
+ self.login(api_user, api_password, True)
+
+ def query_page(self, title: str) -> dict:
+ rv_props = ['ids', 'contentmodel', 'content']
+ return next(self.query_pages(titles=title, prop='revisions', rvprop=rv_props, rvslots='main'))
+
+ @lru_cache
+ def sledrun_schema(self) -> dict:
+ schema = self.query_page('Winterrodeln:Datenschema/Rodelbahn/V1.json')
+ return page_json(schema)