]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - wradmin/controllers/rodelbahn.py
00be2c909e9e9c44e32e5669d43c9956f573337d
[philipp/winterrodeln/wradmin.git] / wradmin / controllers / rodelbahn.py
1 #!/usr/bin/python2.6
2 # -*- coding: iso-8859-15 -*-
3 import logging
4
5 from pylons import request, response, session, url, tmpl_context as c
6 from pylons.controllers.util import abort, redirect
7 import webhelpers.paginate as paginate
8
9 from wradmin.lib.base import BaseController, render
10 import wradmin.model as model
11 import sqlalchemy as sa
12 import formencode
13 import re
14
15 import wrpylib.wrmwmarkup
16 import wrpylib.wrmwcache
17
18 from weberror import collector        # Prevent a bug of weberror # See https://bitbucket.org/bbangert/weberror/issue/3/nameerror-global-name-fallback_encoding-is-not
19 collector.FALLBACK_ENCODING = 'utf-8' # --"--
20
21 log = logging.getLogger(__name__)
22
23
24 class RodelbahnController(BaseController):
25
26     def index(self):
27         return render('index.html')
28
29
30     def list(self):
31         "Lists all sled runs"
32         q = model.meta.Session.query(model.WrSledrunCache)
33         q = q.order_by(model.WrSledrunCache.page_title)
34         c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25)
35         return render('rodelbahn_list.html')
36     
37     
38     def view(self, id):
39         "Displays a sled run"
40         q = model.meta.Session.query(model.WrSledrunCache)
41         c.sledding =  q.get(id)
42         if c.sledding is None: abort(404)
43         q = model.meta.Session.query(model.WrReport)
44         q = q.filter_by(page_id=id).order_by(sa.sql.expression.desc(model.WrReport.id))
45         c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25)
46         return render('rodelbahn_view.html')
47     
48     
49     def update(self):
50         "Updates the wrsledruncache table from the wiki"
51         c = model.meta.Session.connection()
52         try:
53             wrpylib.wrmwcache.update_wrsledruncache(c)
54             model.meta.Session.commit()
55             session['flash'] = u'Die Rodelbahnliste wurde erfolgreich aktualisiert.'
56         except wrpylib.wrmwcache.UpdateCacheError as e:
57             if len(e.args) == 3: session['flash'] = u"Fehler bei Rodelbahn '{0}': {1}".format(e.args[1], e.args[2])
58             else: session['flash'] = unicode(e)
59         session.save()
60         # Redirect to result page
61         return redirect(url(controller='rodelbahn', action='list'))
62