]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blobdiff - wradmin/__init__.py
Implement update_wrreportcache functionality via GUI.
[philipp/winterrodeln/wradmin.git] / wradmin / __init__.py
index 0c450c64eb539834c1db78057605403049292186..6d8684f37dfbb1286cfa00637da26e6005b1f1ee 100644 (file)
@@ -1,19 +1,27 @@
-# http://flask.pocoo.org/
-# FLASK_APP=wradmin FLASK_DEBUG=1 WRADMIN_SETTINGS=development.cfg python3 -m flask run
-# FLASK_APP=wradmin WRADMIN_SETTINGS=production.cfg python3 -m flask run
-from flask import Flask, send_from_directory, abort, g
+from flask import Flask, send_from_directory, abort, g, render_template, request, redirect, url_for, flash
 from sqlalchemy.engine import create_engine
 import wradmin.model
 from sqlalchemy.engine import create_engine
 import wradmin.model
-from wradmin.genshi import render_genshi_template
+import wradmin.template_helper
 from wradmin.controllers.rodelbahn import RodelbahnController
 from wradmin.controllers.gasthaus import GasthausController
 from wradmin.controllers.bericht import BerichtController
 from wradmin.controllers.coordtool import CoordtoolController
 from wradmin.controllers.rodelbahn import RodelbahnController
 from wradmin.controllers.gasthaus import GasthausController
 from wradmin.controllers.bericht import BerichtController
 from wradmin.controllers.coordtool import CoordtoolController
+from wradmin.auth import password_is_correct
+from wradmin.auth.forms import LoginForm
+from flask_login import LoginManager, current_user, login_required, login_user, logout_user
 
 
 app = Flask(__name__)
 app.config.from_envvar('WRADMIN_SETTINGS')
 wradmin.model.init_model(create_engine(app.config['DATABASE_URI']))
 
 
 app = Flask(__name__)
 app.config.from_envvar('WRADMIN_SETTINGS')
 wradmin.model.init_model(create_engine(app.config['DATABASE_URI']))
+app.jinja_env.globals.update(h=wradmin.template_helper.PylonsHelper())
+login_manager = LoginManager(app)
+login_manager.login_view = "login"
+
+
+@app.before_request
+def _before_request():
+    g.user = current_user
 
 
 @app.teardown_appcontext
 
 
 @app.teardown_appcontext
@@ -24,7 +32,7 @@ def remove_db_session(error):
 
 @app.route("/")
 def index():
 
 @app.route("/")
 def index():
-    return render_genshi_template('index.html')
+    return render_template('index.html')
 
 
 @app.route("/rodelbahn/list")
 
 
 @app.route("/rodelbahn/list")
@@ -46,6 +54,9 @@ def rodelbahn_update():
 def rodelbahn_update_regioncache():
     return RodelbahnController().update_regioncache()
 
 def rodelbahn_update_regioncache():
     return RodelbahnController().update_regioncache()
 
+@app.route("/rodelbahn/update_mapcache")
+def rodelbahn_update_mapcache():
+    return RodelbahnController().update_mapcache()
 
 @app.route("/bericht/list")
 def bericht_list():
 
 @app.route("/bericht/list")
 def bericht_list():
@@ -62,6 +73,11 @@ def bericht_change_date_invalid(id):
     return BerichtController().change_date_invalid(id)
 
 
     return BerichtController().change_date_invalid(id)
 
 
+@app.route("/bericht/update_reportcache")
+def bericht_update_reportcache():
+    return BerichtController().update_reportcache()
+
+
 @app.route("/gasthaus/list")
 def gasthaus_list():
     return GasthausController().list()
 @app.route("/gasthaus/list")
 def gasthaus_list():
     return GasthausController().list()
@@ -85,3 +101,31 @@ def coordtool_index():
 @app.route("/coordtool/convert", methods=['POST'])
 def coordtool_convert():
     return CoordtoolController().convert()
 @app.route("/coordtool/convert", methods=['POST'])
 def coordtool_convert():
     return CoordtoolController().convert()
+
+
+@app.route("/login", methods=['GET', 'POST'])
+def login():
+    form = LoginForm()
+    if form.validate_on_submit():
+        user = wradmin.model.meta.Session.query(wradmin.model.MwUser).filter_by(user_name=form.user_name.data).first()
+        if user is not None and password_is_correct(form.password.data, user.user_password.decode()):
+            login_user(user, form.remember_me.data)
+            next = request.args.get('next')
+            if next is None or not next.startswith('/'):
+                next = url_for('index')
+            flash('Sie sind nun angemeldet.')
+            return redirect(next)
+        flash('Ungülter Benutzername oder ungültiges Passwort.')
+    return render_template('auth/login.html', form=form)
+
+
+@app.route("/logout")
+def logout():
+    logout_user()
+    flash('Sie wurden ausgeloggt.')
+    return redirect(url_for('index'))
+
+
+@login_manager.user_loader
+def user_loader(user_id):
+    return wradmin.model.meta.Session.query(wradmin.model.MwUser).get(user_id)