X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wradmin.git/blobdiff_plain/a65f2f5a88e41e122eeb13b62a97d757b4835981..2cf4f3b35ca678c082eed9ef7a4dbe651b189870:/wradmin/__init__.py diff --git a/wradmin/__init__.py b/wradmin/__init__.py index 0c450c6..6d8684f 100644 --- a/wradmin/__init__.py +++ b/wradmin/__init__.py @@ -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 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.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.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 @@ -24,7 +32,7 @@ def remove_db_session(error): @app.route("/") def index(): - return render_genshi_template('index.html') + return render_template('index.html') @app.route("/rodelbahn/list") @@ -46,6 +54,9 @@ def rodelbahn_update(): 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(): @@ -62,6 +73,11 @@ def bericht_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() @@ -85,3 +101,31 @@ def coordtool_index(): @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)