+import datetime
import itertools
import json
from sqlalchemy import orm
-from wrpylib import mwdb, wrmwdb
-from wrpylib.wrorm import Page, WrIntermapsSledrun
+from wrpylib.wrorm import Page, WrIntermapsSledrun, WrIntermapsReport, WrIntermapsReportHistory
def investigate(filename: str, write_back_formatted: bool):
yield region, sledrun
+def region_to_region_with_sledrun_dict(region: dict):
+ region = region.copy()
+ region.update({'sledruns': {sledrun['id']: sledrun for sledrun in region['sledruns']['items']}})
+ return region
+
+
+def json_content_to_region_dict(json_content: dict) -> dict:
+ return {region['id']: region_to_region_with_sledrun_dict(region) for region in json_content['items']}
+
+
def update_wrintermapssledrun(session, json_content: dict):
"""Updates the wrintermapssledrun table from the wiki. By filling in the missing fields of rows as long as
intermaps_sledrun_id and wr_page_id are set.
session.commit()
+def update_wrintermapsreport(session, json_content: dict):
+ # add current content of intermaps_report to intermaps_history
+ pass
+
+ # delete content of intermaps_report
+ session.query(WrIntermapsReport).delete()
+
+ # add JSON content to intermaps_report
+ regions = json_content_to_region_dict(json_content)
+ for sledrun in session.query(WrIntermapsSledrun):
+ region = regions.get(sledrun.intermaps_region_id)
+ if region is None:
+ continue
+ sledrun_json = region['sledruns'].get(sledrun.intermaps_sledrun_id)
+ if sledrun_json is None:
+ continue
+ report = WrIntermapsReport()
+ report.intermaps_sledrun_id = sledrun.intermaps_sledrun_id
+ report.status = sledrun_json['status']
+ report.last_update = region['lastUpdate']
+ report.last_check = datetime.datetime.now()
+ report.utc_offset = 1
+ session.add(report)
+ session.commit()
+
+
if __name__ == '__main__':
from sqlalchemy.engine import create_engine
engine = create_engine('mysql://philipp@localhost:3306/philipp_winterrodeln_wiki?charset=utf8&use_unicode=1')
filename = '/home/philipp/daten/Winterrodeln/Intermaps/intermaps_winterrodeln_2019-12-06_090501.json'
with open(filename) as fp:
content = json.load(fp)
- update_wrintermapssledrun(Session(), content)
+ session = Session()
+ update_wrintermapssledrun(session, content)
+ update_wrintermapsreport(session, content)