#!/usr/bin/python2.6 import logging from pylons import request, response, session, url, tmpl_context as c from pylons.controllers.util import abort, redirect import webhelpers.paginate as paginate from wradmin.lib.base import BaseController, render import wradmin.model as model import sqlalchemy as sa import formencode import re import wrpylib.wrmwmarkup import wrpylib.wrmwcache import wrpylib.mwmarkup from weberror import collector # Prevent a bug of weberror # See https://bitbucket.org/bbangert/weberror/issue/3/nameerror-global-name-fallback_encoding-is-not collector.FALLBACK_ENCODING = 'utf-8' # --"-- log = logging.getLogger(__name__) class RodelbahnController(BaseController): def index(self): return render('index.html') def list(self): "Lists all sled runs" q = model.meta.Session.query(model.WrSledrunCache) q = q.order_by(model.WrSledrunCache.page_title) c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25) return render('rodelbahn_list.html') def view(self, id): "Displays a sled run" q = model.meta.Session.query(model.WrSledrunCache) c.sledding = q.get(id) if c.sledding is None: abort(404) q = model.meta.Session.query(model.WrReport) q = q.filter_by(page_id=id).order_by(sa.sql.expression.desc(model.WrReport.id)) c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25) return render('rodelbahn_view.html') def update(self): "Updates the wrsledruncache table from the wiki" c = model.meta.Session.connection() try: wrpylib.wrmwcache.update_wrsledruncache(c) model.meta.Session.commit() session['flash'] = 'Die Rodelbahnliste wurde erfolgreich aktualisiert.' except wrpylib.wrmwcache.UpdateCacheError as e: title = str(e.args[1]) title = wrpylib.mwmarkup.to_title(title) msg = str(e.args[2]) msg = msg.replace('\n', '; ') if len(e.args) == 3: session['flash'] = "Fehler bei Rodelbahn '{0}': {1}".format(title, msg) else: session['flash'] = str(e) session.save() # Redirect to result page return redirect(url(controller='rodelbahn', action='list')) def update_regioncache(self): "Updates the wrregioncache table from the wiki" c = model.meta.Session.connection() try: wrpylib.wrmwcache.update_wrregioncache(c) model.meta.Session.commit() session['flash'] = 'Die Rodelbahneinträge in den Regionslisten wurden erfolgreich aktualisiert.' except wrpylib.wrmwcache.UpdateCacheError as e: session['flash'] = str(e) session.save() # Redirect to result page return redirect(url(controller='rodelbahn', action='list'))