laserweb/laserweb.py

69 lines
1.5 KiB
Python

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('/')