Use new wrpylib.orm classes.
authorphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Tue, 17 Dec 2019 20:19:08 +0000 (20:19 +0000)
committerphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Tue, 17 Dec 2019 20:19:08 +0000 (20:19 +0000)
git-svn-id: http://www.winterrodeln.org/svn/wrpylib/trunk@2855 7aebc617-e5e2-0310-91dc-80fb5f6d2477

wrpylib/wrintermaps.py

index 9d04c2a63ac2294f2af0e8350e6886683decd573..71746a2bf8ac0067993118f18dab8a74ecae7b65 100644 (file)
@@ -1,7 +1,8 @@
 import itertools
 import json
-from sqlalchemy import schema, orm
+from sqlalchemy import orm
 from wrpylib import mwdb, wrmwdb
+from wrpylib.wrorm import Page, WrIntermapsSledrun
 
 
 def investigate(filename: str, write_back_formatted: bool):
@@ -33,33 +34,21 @@ def find_intermaps_sledrun(intermaps_sledrun_id: str, json_content: dict):
                 yield region, sledrun
 
 
-def update_wrintermapssledrun(engine, json_content: dict):
-    """Updates the wrintermapssledrun table from the wiki. If convert errors occur, an UpdateError exception
+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.
+    If convert errors occur, an UpdateError exception
     is raised. No other exception type should be raised under normal circumstances.
 
     >>> import json
     >>> from sqlalchemy.engine import create_engine
     >>> engine = create_engine('mysql://philipp@localhost:3306/philipp_winterrodeln_wiki?charset=utf8&use_unicode=1')
+    >>> Session = orm.sessionmaker(bind=engine)
     >>> with open('2019-12-06_090500.json') as fp:
     >>>     content = json.load(fp)
-    >>> update_wrintermapssledrun(engine, content)
+    >>> update_wrintermapssledrun(Session(), content)
     """
-    class Page:
-        pass
-
-    class IntermapsSledrun:
-        pass
-
-    metadata = schema.MetaData()
-    wrintermapssledrun_table = wrmwdb.wrintermapssledrun_table(metadata)
-    page_table = mwdb.page_table(metadata)
-
-    Session = orm.sessionmaker(bind=engine)
-    session = Session()
-    orm.mapper(IntermapsSledrun, wrintermapssledrun_table)
-    orm.mapper(Page, page_table)
-
-    q = session.query(IntermapsSledrun)
+    q = session.query(WrIntermapsSledrun)
     for intermaps_sledrun in q:
         if intermaps_sledrun.intermaps_sledrun_name is None or intermaps_sledrun.intermaps_region_id is None or \
                 intermaps_sledrun.intermaps_region_name is None or intermaps_sledrun.intermaps_country is None:
@@ -87,7 +76,8 @@ def update_wrintermapssledrun(engine, json_content: dict):
 if __name__ == '__main__':
     from sqlalchemy.engine import create_engine
     engine = create_engine('mysql://philipp@localhost:3306/philipp_winterrodeln_wiki?charset=utf8&use_unicode=1')
+    Session = orm.sessionmaker(bind=engine)
     filename = '/home/philipp/daten/Winterrodeln/Intermaps/intermaps_winterrodeln_2019-12-06_090501.json'
     with open(filename) as fp:
         content = json.load(fp)
-    update_wrintermapssledrun(engine, content)
+    update_wrintermapssledrun(Session(), content)