]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - wradmin/controllers/rodelbahn.py
Remove shebang in several files.
[philipp/winterrodeln/wradmin.git] / wradmin / controllers / rodelbahn.py
1 from flask import request, abort, redirect, url_for, flash, render_template
2 import paginate
3 import sqlalchemy as sa
4
5 import wrpylib.wrmwmarkup
6 import wrpylib.wrmwcache
7 import wrpylib.mwmarkup
8
9 import wradmin.model as model
10
11
12 class RodelbahnController:
13
14     def list(self):
15         """Lists all sled runs"""
16         q = model.meta.Session.query(model.WrSledrunCache)
17         q = q.order_by(model.WrSledrunCache.page_title)
18         paginator = paginate.Page(q.all(), page=int(request.args.get('page', 1)),
19                                   url_maker=lambda page: url_for('rodelbahn_list', page=page),
20                                   items_per_page=25)
21         return render_template('rodelbahn_list.html', paginator=paginator)
22
23     def view(self, id):
24         """Displays a sled run"""
25         q = model.meta.Session.query(model.WrSledrunCache)
26         sledding = q.get(id)
27         if sledding is None:
28             abort(404)
29         q = model.meta.Session.query(model.WrReport)
30         q = q.filter_by(page_id=id).order_by(sa.sql.expression.desc(model.WrReport.id))
31         paginator = paginate.Page(q.all(), page=int(request.args.get('page', 1)),
32                                   url_maker=lambda page: url_for('rodelbahn_view', id=id, page=page),
33                                   items_per_page=25)
34         return render_template('rodelbahn_view.html', sledding=sledding, paginator=paginator)
35
36     def update(self):
37         """Updates the wrsledruncache table from the wiki"""
38         c = model.meta.Session.connection()
39         try:
40             wrpylib.wrmwcache.update_wrsledruncache(c)
41             model.meta.Session.commit()
42             flash('Die Rodelbahnliste wurde erfolgreich aktualisiert.', 'info')
43         except wrpylib.wrmwcache.UpdateCacheError as e:
44             title = str(e.args[1])
45             title = wrpylib.mwmarkup.dbkey_to_title(title)
46             msg = str(e.args[2])
47             msg = msg.replace('\n', '; ')
48             if len(e.args) == 3:
49                 flash("Fehler bei Rodelbahn '{0}': {1}".format(title, msg), 'error')
50             else:
51                 flash(str(e), 'error')
52         # Redirect to result page
53         return redirect(url_for('rodelbahn_list'))
54
55     def update_regioncache(self):
56         """Updates the wrregioncache table from the wiki"""
57         c = model.meta.Session.connection()
58         try:
59             wrpylib.wrmwcache.update_wrregioncache(c)
60             model.meta.Session.commit()
61             flash('Die Rodelbahneinträge in den Regionslisten wurden erfolgreich aktualisiert.', 'info')
62         except wrpylib.wrmwcache.UpdateCacheError as e:
63             flash(str(e), 'error')
64         # Redirect to result page
65         return redirect(url_for('rodelbahn_list'))
66
67     def update_mapcache(self):
68         """Updates the wrmappointcache and wrmappathcache tables from the wiki."""
69         c = model.meta.Session.connection()
70         try:
71             wrpylib.wrmwcache.update_wrmapcache(c)
72             model.meta.Session.commit()
73             flash('Die Landkarteninformationen aus dem Wiki wurden erfolgreich aktualisiesrt.', 'info')
74         except wrpylib.wrmwcache.UpdateCacheError as e:
75             flash(str(e), 'error')
76         # Redirect to result page
77         return redirect(url_for('rodelbahn_list'))