implement maintenance mode env var

This commit is contained in:
simon 2022-09-19 21:00:10 +07:00
parent 9285a1ea32
commit 635983f347
Signed by: simon
GPG Key ID: 2C15AA5E89985DD4
3 changed files with 68 additions and 18 deletions

View File

@ -300,6 +300,18 @@ a {
}
/* about end */
/* maintenance start */
.maintenance-wrap {
background-color: rgb(219, 228, 209);
min-height: 100vh;
display: grid;
justify-content: center;
align-items: center;
text-align: center;
padding: 10px;
}
/* maintenance end */
/* responsiv start */
@media screen and (max-width: 1000px) {
.content,

View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/style.css') }}">
<title>AQI - Under Maintenance</title>
</head>
<body>
<div class="maintenance-wrap">
<div>
<h1>Under Maintenance</h1>
<p>Air Quality is taking a break and will be back soon.</p>
</div>
</div>
</body>
</html>

View File

@ -21,6 +21,24 @@ matplotlib.use('Agg')
# start up
app = Flask(__name__)
# maintenance mode
is_maintenance_mode = bool(os.environ.get("MAINTENANCE"))
@app.before_request
def check_for_maintenance():
print(request.path)
ALLOW = ["/static/css/style.css", "/static/favicon.ico", "/static/font/Rubik-Bold.ttf", "/static/font/Rubik-Regular.ttf"]
if is_maintenance_mode and request.path not in ALLOW:
# return redirect(url_for('maintenance'))
# Or alternatively, dont redirect
# return 'Sorry, off for maintenance!', 503
return render_template('maintenance.html'), 503
# @app.route('/maintenance')
# def maintenance():
# return 'Sorry, off for maintenance!', 503
CONFIG = get_config()
auth = HTTPBasicAuth()
aqi_user = CONFIG['aqi_monitor']
@ -28,25 +46,26 @@ USER_DATA = {
aqi_user['authUsername']: aqi_user['authPassword']
}
# initial export
print('initial export')
current_graph()
nightly_graph()
monthly_graph()
if not is_maintenance_mode:
# initial export
print('initial export')
current_graph()
nightly_graph()
monthly_graph()
# start scheduler
timezone = os.environ.get("TZ")
scheduler = BackgroundScheduler(timezone=timezone)
scheduler.add_job(
current_graph, trigger="cron", minute='*/5', name='current_graph'
)
scheduler.add_job(
nightly_graph, trigger="cron", day='*', hour='1', minute='1', name='night'
)
scheduler.add_job(
monthly_graph, trigger="cron", day='*', hour='1', minute='2', name='month'
)
scheduler.start()
# start scheduler
timezone = os.environ.get("TZ")
scheduler = BackgroundScheduler(timezone=timezone)
scheduler.add_job(
current_graph, trigger="cron", minute='*/5', name='current_graph'
)
scheduler.add_job(
nightly_graph, trigger="cron", day='*', hour='1', minute='1', name='night'
)
scheduler.add_job(
monthly_graph, trigger="cron", day='*', hour='1', minute='2', name='month'
)
scheduler.start()
@auth.verify_password