diff --git a/web/static/css/style.css b/web/static/css/style.css index d453400..a27e600 100644 --- a/web/static/css/style.css +++ b/web/static/css/style.css @@ -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, diff --git a/web/templates/maintenance.html b/web/templates/maintenance.html new file mode 100644 index 0000000..e8b40e8 --- /dev/null +++ b/web/templates/maintenance.html @@ -0,0 +1,19 @@ + + + + + + + + + AQI - Under Maintenance + + +
+
+

Under Maintenance

+

Air Quality is taking a break and will be back soon.

+
+
+ + \ No newline at end of file diff --git a/web/views.py b/web/views.py index ab635eb..02a494c 100644 --- a/web/views.py +++ b/web/views.py @@ -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