diff --git a/requirements.txt b/requirements.txt index 85a7cae..ef76f0b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ bootstrap-flask waitress bokeh pandas +duckdb \ No newline at end of file diff --git a/src/flask/beer_data.py b/src/flask/beer_data.py index f294de3..755fecd 100644 --- a/src/flask/beer_data.py +++ b/src/flask/beer_data.py @@ -1,6 +1,7 @@ from bokeh.core.enums import SpatialUnitsType import mongo.build_db as beer_database import mongo.query_db as beer_database_query +from table import table_builder from flask import Flask, render_template, request, jsonify, redirect, session from flask_wtf import FlaskForm, CSRFProtect @@ -14,6 +15,7 @@ from charts import BeerCharts from bokeh.io import output_file, show from bokeh.layouts import row + app = Flask(__name__) app.secret_key = 'testsecret' #this value will change @@ -62,11 +64,16 @@ def index(): def updater(): if 'logged_in' not in session: return redirect("/") - #create_graphs() + predicted_alc_table = table_builder.TableBuilder().table_build() + tr_replace_string = '' + beer_html = predicted_alc_table.to_html(col_space='75px', index=False, + justify='center', border=3).replace('', tr_replace_string) query_db = beer_database_query.pool_query() query = query_db.get_top(10, "sg") form = dataForm() + + if form.validate_on_submit(): database = beer_database.beer_data() new_record = { @@ -91,9 +98,11 @@ def updater(): database.create_re_record(new_record["beer_run_id"], new_record["beer_type"], new_record["sg"], new_record["date"], final_run_value, new_record["comment"]) - return render_template("updater.html", list=query, form=form, success=True, updater_name = "Saucy Beer Maker") + return render_template("updater.html", beer_data = beer_html + , list=query, form=form, success=True, updater_name = "Saucy Beer Maker") else: - return render_template("updater.html", list=query, form=form, sucess=False) + return render_template("updater.html", beer_data = beer_html + , list=query, form=form, sucess=False) # @app.route("/update_db", methods=["POST"]) # def beer_data_update(): diff --git a/src/flask/table/table_builder.py b/src/flask/table/table_builder.py index 4be46b4..9b4201a 100644 --- a/src/flask/table/table_builder.py +++ b/src/flask/table/table_builder.py @@ -2,12 +2,13 @@ import sys from mongo.get_conn import db_conn import pandas as pd +import duckdb class TableBuilder(): def __init__(self) -> None: self.db = db_conn() - def table_build(self, field, read_count=3, runs=5) -> pd.DataFrame: + def table_build(self, limit=10) -> pd.DataFrame: data = self.db.beer_db data = data.find({}).sort("date", -1) df_dict = {} @@ -21,9 +22,28 @@ class TableBuilder(): df_dict["sg"].append(record["sg"]) df_dict["date"].append(record["date"]) df_dict["final_reading"].append(record["final_reading"]) - df = pd.DataFrame(data=df_dict) - df_sum = df.groupby('beer_run_id').agg({'sg': ['max', 'min']}) - return df_sum + sql = f""" + SELECT x.beer_run_id as "Beer Run", + max(sg) as "Max", + min(sg) as "Min" + FROM df x + JOIN + ( SELECT DISTINCT beer_run_id + FROM df + WHERE final_reading = 'True' + ) y ON x.beer_run_id = y.beer_run_id + GROUP BY x.beer_run_id + ORDER BY x.beer_run_id desc + LIMIT {limit} + """ + df_sum = duckdb.sql(sql).df() + sql = f""" + SELECT *, + ROUND(((CAST (max AS INTEGER) - CAST(min AS INTEGER)) / 7.36) + 0.5, 2) AS "Alcohol Prediction" + FROM df_sum + """ + df_calc = duckdb.sql(sql).df() + return df_calc diff --git a/src/flask/templates/updater.html b/src/flask/templates/updater.html index 09d0d63..b7745a7 100644 --- a/src/flask/templates/updater.html +++ b/src/flask/templates/updater.html @@ -46,18 +46,15 @@ --> - -
-
- - -
-
- +
+ {{ beer_data | safe }} + +
diff --git a/src/flask/test.py b/src/flask/test.py index 562a65e..8a4794c 100644 --- a/src/flask/test.py +++ b/src/flask/test.py @@ -2,4 +2,4 @@ import table.table_builder as table_builder test = table_builder.TableBuilder() -print(test.table_build("sg")) +print(test.table_build())