]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blobdiff - wradmin/__init__.py
Start creating render view of sledrun-JSON.
[philipp/winterrodeln/wradmin.git] / wradmin / __init__.py
index 2d4aeb5a169ad24e9035684495a51af6493f26a8..4dd0ebec06c0d4f47c30e0b4d19460403137dc94 100644 (file)
@@ -1,27 +1,18 @@
-from flask import Flask, send_from_directory, abort, g, render_template, request, redirect, url_for, flash, \
+from flask import g, render_template, request, redirect, url_for, flash, \
     session, current_app
-from sqlalchemy.engine import create_engine
+from flask_login import current_user, login_required, login_user, logout_user
+from flask_principal import RoleNeed, identity_changed, identity_loaded, Identity, \
+    AnonymousIdentity, UserNeed
+
 import wradmin.model
 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.app import app, db, admin_permission, login_manager
 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
-from flask_principal import Principal, Permission, RoleNeed, identity_changed, identity_loaded, Identity, \
-    AnonymousIdentity, UserNeed
-
-
-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"
-principals = Principal(app)
-admin_permission = Permission(RoleNeed('admin'))
+from wradmin.controllers.bericht import BerichtController
+from wradmin.controllers.coordtool import CoordtoolController
+from wradmin.controllers.gasthaus import GasthausController
+from wradmin.controllers.rodelbahn import RodelbahnController
 
 
 @app.before_request
@@ -29,12 +20,6 @@ def _before_request():
     g.user = current_user
 
 
-@app.teardown_appcontext
-def remove_db_session(error):
-    """Removes the database session at the end of the request."""
-    wradmin.model.meta.Session.remove()
-
-
 @app.route("/")
 def index():
     return render_template('index.html')
@@ -53,6 +38,18 @@ def rodelbahn_view(id):
     return RodelbahnController().view(id)
 
 
+@app.route("/rodelbahn/view_wikitext/<int:id>")
+def rodelbahn_view_wikitext(id):
+    return RodelbahnController().view_wikitext(id)
+
+
+@app.route("/rodelbahn/json/edit/<int:id>")
+@login_required
+@admin_permission.require(403)
+def rodelbahn_json_edit(id):
+    return RodelbahnController().json_edit(id)
+
+
 @app.route("/rodelbahn/update")
 @login_required
 def rodelbahn_update():
@@ -132,7 +129,7 @@ def coordtool_convert():
 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()
+        user = db.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)
             identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id()))
@@ -157,7 +154,7 @@ def logout():
 
 @login_manager.user_loader
 def user_loader(user_id):
-    return wradmin.model.meta.Session.query(wradmin.model.MwUser).get(user_id)
+    return wradmin.db.session.query(wradmin.model.MwUser).get(user_id)
 
 
 @identity_loaded.connect_via(app)
@@ -166,5 +163,5 @@ def on_identity_loaded(sender, identity):
     user_id = current_user.get_id()
     if user_id is not None:
         identity.provides.add(UserNeed(user_id))
-        if wradmin.model.meta.Session.query(wradmin.model.MwUserGroups).get((user_id, 'sysop')) is not None:
+        if wradmin.db.session.query(wradmin.model.MwUserGroups).get((user_id, 'sysop')) is not None:
             identity.provides.add(RoleNeed('admin'))