]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - wradmin/controllers/rodelbahn.py
8f1c2e91b5c01ff6b6c300e962b114658f5d75c6
[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 import wrpylib.mwapi
18
19 from weberror import collector        # Prevent a bug of weberror # See https://bitbucket.org/bbangert/weberror/issue/3/nameerror-global-name-fallback_encoding-is-not
20 collector.FALLBACK_ENCODING = 'utf-8' # --"--
21
22 log = logging.getLogger(__name__)
23
24
25 class RodelbahnController(BaseController):
26
27     def index(self):
28         return render('index.html')
29
30
31     def list(self):
32         "Lists all sled runs"
33         q = model.meta.Session.query(model.WrSledrunCache)
34         q = q.order_by(model.WrSledrunCache.page_title)
35         c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25)
36         return render('rodelbahn_list.html')
37     
38     
39     def view(self, id):
40         "Displays a sled run"
41         q = model.meta.Session.query(model.WrSledrunCache)
42         c.sledding =  q.get(id)
43         if c.sledding is None: abort(404)
44         q = model.meta.Session.query(model.WrReport)
45         q = q.filter_by(page_id=id).order_by(sa.sql.expression.desc(model.WrReport.id))
46         c.paginator = paginate.Page(q, page=int(request.params.get('page', 1)), items_per_page = 25)
47         return render('rodelbahn_view.html')
48     
49     
50     def update(self):
51         "Updates the wrsledruncache table from the wiki"
52         c = model.meta.Session.connection()
53         try:
54             wrpylib.wrmwcache.update_wrsledruncache(c)
55             model.meta.Session.commit()
56             session['flash'] = u'Die Rodelbahnliste wurde erfolgreich aktualisiert.'
57         except wrpylib.wrmwcache.UpdateCacheError as e:
58             title = unicode(e.args[1])
59             title = wrpylib.mwapi.to_title(title)
60             msg = unicode(e.args[2])
61             msg = msg.replace('\n', '; ')
62             if len(e.args) == 3: session['flash'] = u"Fehler bei Rodelbahn '{0}': {1}".format(title, msg)
63             else: session['flash'] = unicode(e)
64         session.save()
65         # Redirect to result page
66         return redirect(url(controller='rodelbahn', action='list'))
67
68
69     def update_regioncache(self):
70         "Updates the wrregioncache table from the wiki"
71         c = model.meta.Session.connection()
72         try:
73             wrpylib.wrmwcache.update_wrregioncache(c)
74             model.meta.Session.commit()
75             session['flash'] = u'Die Rodelbahneinträge in den Regionslisten wurden erfolgreich aktualisiert.'
76         except wrpylib.wrmwcache.UpdateCacheError as e:
77             session['flash'] = unicode(e)
78         session.save()
79         # Redirect to result page
80         return redirect(url(controller='rodelbahn', action='list'))
81