]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - wradmin/controllers/rodelbahn.py
Changed Python version in the file headers to 3.4.
[philipp/winterrodeln/wradmin.git] / wradmin / controllers / rodelbahn.py
1 #!/usr/bin/python3.4
2 import logging
3
4 from pylons import request, response, session, url, tmpl_context as c
5 from pylons.controllers.util import abort, redirect
6 import webhelpers.paginate as paginate
7
8 from wradmin.lib.base import BaseController, render
9 import wradmin.model as model
10 import sqlalchemy as sa
11 import formencode
12 import re
13
14 import wrpylib.wrmwmarkup
15 import wrpylib.wrmwcache
16 import wrpylib.mwmarkup
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'] = 'Die Rodelbahnliste wurde erfolgreich aktualisiert.'
56         except wrpylib.wrmwcache.UpdateCacheError as e:
57             title = str(e.args[1])
58             title = wrpylib.mwmarkup.to_title(title)
59             msg = str(e.args[2])
60             msg = msg.replace('\n', '; ')
61             if len(e.args) == 3: session['flash'] = "Fehler bei Rodelbahn '{0}': {1}".format(title, msg)
62             else: session['flash'] = str(e)
63         session.save()
64         # Redirect to result page
65         return redirect(url(controller='rodelbahn', action='list'))
66
67
68     def update_regioncache(self):
69         "Updates the wrregioncache table from the wiki"
70         c = model.meta.Session.connection()
71         try:
72             wrpylib.wrmwcache.update_wrregioncache(c)
73             model.meta.Session.commit()
74             session['flash'] = 'Die Rodelbahneinträge in den Regionslisten wurden erfolgreich aktualisiert.'
75         except wrpylib.wrmwcache.UpdateCacheError as e:
76             session['flash'] = str(e)
77         session.save()
78         # Redirect to result page
79         return redirect(url(controller='rodelbahn', action='list'))
80