from sqlalchemy.sql import select
from sqlalchemy.sql.expression import func as sqlfunc
from osgeo import ogr
-import formencode
from wrpylib import mwdb, wrmwdb, mwmarkup, wrmwmarkup, wrvalidators
categorylinks = mwdb.categorylinks_table(metadata)
revision = mwdb.revision_table(metadata)
text = mwdb.text_table(metadata)
+ class Sledrun:
+ pass
transaction = connection.begin()
# Refill wrsledruncache table
for sledrun_page in sledrun_pages:
- try:
- start, end, sledrun = wrmwmarkup.rodelbahnbox_to_sledrun(sledrun_page.old_text)
+ try:
+ rodelbahnbox = wrvalidators.rodelbahnbox_from_str(sledrun_page.old_text)
+ sledrun = wrmwmarkup.sledrun_from_rodelbahnbox(rodelbahnbox, Sledrun())
sledrun.page_id = sledrun_page.page_id
sledrun.page_title = sledrun_page.page_title
sledrun.name_url = wrvalidators.sledrun_page_title_to_pretty_url(sledrun_page.page_title)
- sledrun.under_construction = connection.execute(select([categorylinks], (categorylinks.c.cl_from==sledrun_page.page_id) & (categorylinks.c.cl_to == 'In_Arbeit')).alias('x').count()).fetchone()[0] > 0 # It would be better to do this in the query above
+ sledrun.under_construction = connection.execute(select([categorylinks], (categorylinks.c.cl_from==sledrun_page.page_id) & (categorylinks.c.cl_to == 'In_Arbeit')).alias('x').count()).fetchone()[0] > 0
connection.execute(wrsledruncache.insert(sledrun.__dict__))
- except (RuntimeError, formencode.Invalid) as e:
+ except ValueError as e:
transaction.rollback()
error_msg = "Error at sled run '{0}': {1}".format(sledrun_page.page_title, str(e))
raise UpdateCacheError(error_msg, sledrun_page.page_title, e)