from datetime import datetime, date, timedelta import json from urllib import response from dateutil.relativedelta import relativedelta import os from flask import Flask, render_template, redirect, request, url_for, jsonify, Response import jinja_partials from flask_htmx import HTMX import minify_html from urllib.parse import urlparse from flask_socketio import SocketIO from db import DataBase app = Flask(__name__) # TODO CHANGE SECRET KEY TO ENVIRONMENT VARIABLE app.config['SECRET_KEY'] = 'secret!' jinja_partials.register_extensions(app) htmx = HTMX(app) socketio = SocketIO(app, cors_allowed_origins='*') db = DataBase(app) @app.after_request def response_minify(response): """ minify html response to decrease site traffic """ if response.content_type == u'text/html; charset=utf-8': response.set_data( minify_html.minify(response.get_data( as_text=True), minify_js=True, remove_processing_instructions=True) ) return response return response @socketio.on('message') def handle_message(data): current_time = datetime.now().replace( microsecond=0).isoformat() print('' + current_time + ' ' + json.dumps(data)) db.insert_cadence(data['rpm'], data['id']) @ app.route("/") def home(): return render_template('base.html') @app.route("/overview") def overview(): cadences = db.get_all_cadences() last_cadence = cadences[-1]['rpm'] return render_template('overview.html', last_cadence=last_cadence, cadences=cadences) if __name__ == '__main__': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get('PORT', 5000)) socketio.run(app, host='127.0.0.1', port=port)