]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - wradmin/__init__.py
Prevent some updates.
[philipp/winterrodeln/wradmin.git] / wradmin / __init__.py
1 from flask import g, render_template, request, redirect, url_for, flash, \
2     session, current_app
3 from flask_login import current_user, login_required, login_user, logout_user
4 from flask_principal import RoleNeed, identity_changed, identity_loaded, Identity, \
5     AnonymousIdentity, UserNeed
6
7 import wradmin.model
8 import wradmin.template_helper
9 from wradmin.app import app, db, admin_permission, login_manager
10 from wradmin.auth import password_is_correct
11 from wradmin.auth.forms import LoginForm
12 from wradmin.controllers.bericht import BerichtController
13 from wradmin.controllers.coordtool import CoordtoolController
14 from wradmin.controllers.gasthaus import GasthausController
15 from wradmin.controllers.rodelbahn import RodelbahnController
16
17
18 @app.before_request
19 def _before_request():
20     g.user = current_user
21
22
23 @app.route("/")
24 def index():
25     return render_template('index.html')
26
27
28 @app.route("/rodelbahn/list")
29 @login_required
30 def rodelbahn_list():
31     return RodelbahnController().list()
32
33
34 @app.route("/rodelbahn/view/<int:id>")
35 @login_required
36 @admin_permission.require(403)
37 def rodelbahn_view(id):
38     return RodelbahnController().view(id)
39
40
41 @app.route("/rodelbahn/view_wikitext/<int:id>")
42 def rodelbahn_view_wikitext(id):
43     return RodelbahnController().view_wikitext(id)
44
45
46 @app.route("/rodelbahn/json/edit/<int:id>")
47 @login_required
48 @admin_permission.require(403)
49 def rodelbahn_json_edit(id):
50     return RodelbahnController().json_edit(id)
51
52
53 @app.route("/rodelbahn/update")
54 @login_required
55 def rodelbahn_update():
56     return RodelbahnController().update()
57
58
59 @app.route("/rodelbahn/update_regioncache")
60 @login_required
61 def rodelbahn_update_regioncache():
62     return RodelbahnController().update_regioncache()
63
64
65 @app.route("/rodelbahn/update_mapcache")
66 @login_required
67 def rodelbahn_update_mapcache():
68     return RodelbahnController().update_mapcache()
69
70
71 @app.route("/bericht/list")
72 @login_required
73 @admin_permission.require(403)
74 def bericht_list():
75     return BerichtController().list()
76
77
78 @app.route("/bericht/view/<int:id>")
79 @login_required
80 @admin_permission.require(403)
81 def bericht_view(id):
82     return BerichtController().view(id)
83
84
85 @app.route("/bericht/change_date_invalid/<int:id>", methods=['POST'])
86 @login_required
87 @admin_permission.require(403)
88 def bericht_change_date_invalid(id):
89     return BerichtController().change_date_invalid(id)
90
91
92 @app.route("/bericht/update_reportcache")
93 @login_required
94 def bericht_update_reportcache():
95     return BerichtController().update_reportcache()
96
97
98 @app.route("/gasthaus/list")
99 @login_required
100 def gasthaus_list():
101     return GasthausController().list()
102
103
104 @app.route("/gasthaus/view/<int:id>")
105 @login_required
106 def gasthaus_view(id):
107     return GasthausController().view(id)
108
109
110 @app.route("/gasthaus/update")
111 @login_required
112 def gasthaus_update():
113     return GasthausController().update()
114
115
116 @app.route("/coordtool/index")
117 @login_required
118 def coordtool_index():
119     return CoordtoolController().index()
120
121
122 @app.route("/coordtool/convert", methods=['POST'])
123 @login_required
124 def coordtool_convert():
125     return CoordtoolController().convert()
126
127
128 @app.route("/login", methods=['GET', 'POST'])
129 def login():
130     form = LoginForm()
131     if form.validate_on_submit():
132         user = db.session.query(wradmin.model.MwUser).filter_by(user_name=form.user_name.data).first()
133         if user is not None and password_is_correct(form.password.data, user.user_password.decode()):
134             login_user(user, form.remember_me.data)
135             identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id()))
136             next = request.args.get('next')
137             if next is None or not next.startswith('/'):
138                 next = url_for('index')
139             flash('Sie sind nun angemeldet.')
140             return redirect(next)
141         flash('Ungülter Benutzername oder ungültiges Passwort.')
142     return render_template('auth/login.html', form=form)
143
144
145 @app.route("/logout")
146 def logout():
147     logout_user()
148     for key in ('identity.name', 'identity.auth_type'):
149         session.pop(key, None)
150     identity_changed.send(current_app._get_current_object(), identity=AnonymousIdentity())
151     flash('Sie wurden ausgeloggt.')
152     return redirect(url_for('index'))
153
154
155 @login_manager.user_loader
156 def user_loader(user_id):
157     return wradmin.db.session.query(wradmin.model.MwUser).get(user_id)
158
159
160 @identity_loaded.connect_via(app)
161 def on_identity_loaded(sender, identity):
162     identity.user = current_user
163     user_id = current_user.get_id()
164     if user_id is not None:
165         identity.provides.add(UserNeed(user_id))
166         if wradmin.db.session.query(wradmin.model.MwUserGroups).get((user_id, 'sysop')) is not None:
167             identity.provides.add(RoleNeed('admin'))