69 lines
1.5 KiB
Python
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('/')
|