from flask import Flask, render_template, flash, redirect, session from auth import login_required, is_authenticated from models import db, Session from hardware import HardwareClient app = Flask(__name__) app.config['SECRET_KEY'] = 'xD' app.config['HARDWARE_ID'] = '2137' app.config['BROKER'] = ('localhost', 1883) hw = HardwareClient() db.init_app(app) hw.init_app(app) @app.before_first_request def create_all(): db.create_all() @app.context_processor def inject_user(): return { 'logged_in': is_authenticated(), 'current_session': Session.get_current() } @app.route('/') def index(): return render_template('index.html') @app.route('/session/end') def session_end(): s = Session.get_current() if not s: flash('No active session') return redirect('/') if not hw.disable(): flash('Disable request timed out.', 'warning') s.finish() db.session.commit() return logout() @app.route('/session/begin', methods=['GET', 'POST']) @login_required def session_begin(): if Session.get_current(): flash('Session already started', 'warning') return redirect('/') db.session.add(Session(user=session['login'])) db.session.commit() if not hw.enable(): flash('Enable request timed out.', 'warning') else: flash('Session started', 'success') return redirect('/') @app.route('/logout') def logout(): session.clear() flash('Logout successful', 'success') return redirect('/')