-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaquaapp.py
105 lines (78 loc) · 2.73 KB
/
aquaapp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/python3
import os
import importlib
from enum import unique
from click import password_option
from flask import Flask, render_template, redirect, flash, url_for
from flask_login import LoginManager, login_required, logout_user, login_user
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
import gettext #localisations
applocale = gettext.translation('base', localedir='locales/',languages=['cs'])
applocale.install()
_ = applocale.gettext
#discover and init in configuration enabled plugins like motor,epaper,mqtt
#foreach importlib.search....
module = importlib.util.find_spec('PluginMQTT', 'plugins')
mymodule = importlib.import_module('plugins.pluginMQTT')
myclass = getattr(mymodule, 'PluginMQTT')
myobject = myclass()
myobject.readconfig()
myobject.load()
from flask_login import UserMixin
POOL_TIME = 5
login_manager = LoginManager()
app = Flask(__name__, template_folder='static/templates')
import aquadb
aquadb.aquadbInit(app)
import aquaconfig
aquaconfig.aquaConfig.aquaconfigInit()
import aquauser
aquauser.aquaUser.aquauser_init()
@login_manager.user_loader
def load_user(user_id):
user = aquauser.aquaUser(id=user_id)
return user
@app.route("/configure", methods=['GET', 'POST'])
@login_required
def configure():
return render_template('configure.html')
@app.route("/")
def index():
return render_template('index.html')
@app.route('/users')
def aquausers():
return render_template('users.html')
@app.route("/overview", methods=['GET', 'POST'])
def myindex():
return render_template('overview.html', configs=aquaconfig.aquaConfig)
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
formusername = form.user_name.data
user = aquauser.aquaUser.query.filter_by(username=formusername).first()
if user.password == form.password.data:
login_user(user)
flash('Logged in successfully.')
return redirect('/overview')
else:
print("bad password for user \n" + user.username)
flash('Bad password.')
return render_template('login.html', form=form)
@app.route("/logout")
@login_required
def logout():
logout_user()
return redirect('/login')
class Config(object):
SECRET_KEY = os.urandom(32)
app.config['SECRET_KEY'] = SECRET_KEY
class LoginForm(FlaskForm):
user_name = StringField('UserName', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Sign In')
app.config.from_object(aquaconfig.aquaConfig)
login_manager.init_app(app)
app.run(debug=True, use_debugger=True, use_reloader=False)