fix up to get running and some feature add
All checks were successful
Build and Push Image / Build and push image (push) Has been skipped

This commit is contained in:
Andrew Ridgway 2024-09-11 05:45:21 +00:00
parent 592de4793b
commit 56ff1a7247
7 changed files with 45 additions and 36 deletions

View File

@ -1,4 +1,5 @@
FROM git.aridgwayweb.com/armistace/beer_base_image AS flask #FROM git.aridgwayweb.com/armistace/beer_base_image AS flask
FROM beer_base_image AS flask
COPY requirements.txt . COPY requirements.txt .
@ -8,6 +9,6 @@ ENV FLASK_ENV production
ENV FLASK_DEBUG 1 ENV FLASK_DEBUG 1
ENTRYPOINT ["flask", "--app", "/pool_data/src/flask/beer_data", "run", "--host=0.0.0.0"] ENTRYPOINT ["flask", "--app", "/beer_data/src/flask/beer_data", "run", "--host=0.0.0.0"]
#ENTRYPOINT ["python", "/pool_data/src/flask/pool_data.py"] #ENTRYPOINT ["python", "/pool_data/src/flask/pool_data.py"]

View File

@ -20,7 +20,7 @@ def main(username, password):
"password" : f"{password}" "password" : f"{password}"
} }
if user_collection.user_exists(new_record["username"]): if user_collection.user_exists(new_record["username"]):
user_collect.update_user(user_collection.existing_record["_id"], new_record["password"]) user_collection.update_user(user_collection.existing_record["_id"], new_record["password"])
else: else:
user_collection.add_user(new_record["username"], new_record["password"]) user_collection.add_user(new_record["username"], new_record["password"])

View File

@ -1,11 +1,11 @@
from bokeh.core.enums import SpatialUnitsType from bokeh.core.enums import SpatialUnitsType
import mongo.build_db as pool_database import mongo.build_db as beer_database
import mongo.query_db as pool_database_query import mongo.query_db as beer_database_query
from flask import Flask, render_template, request, jsonify, redirect, session from flask import Flask, render_template, request, jsonify, redirect, session
from flask_wtf import FlaskForm, CSRFProtect from flask_wtf import FlaskForm, CSRFProtect
from flask_bootstrap import Bootstrap5 from flask_bootstrap import Bootstrap5
from wtforms import StringField, SubmitField, DateField, IntegerField, PasswordField, DecimalField, RadioField, TextAreaField from wtforms import StringField, SubmitField, DateField, IntegerField, PasswordField, DecimalField, RadioField, TextAreaField, BooleanField
from wtforms.validators import DataRequired, Length, Optional from wtforms.validators import DataRequired, Length, Optional
from waitress import serve from waitress import serve
from bokeh.models.layouts import HBox from bokeh.models.layouts import HBox
@ -26,7 +26,7 @@ output_file("/beer_data/src/flask/static/data_plot.html")
def create_graphs(): def create_graphs():
chart = BeerCharts.BeerCharts() chart = BeerCharts.BeerCharts()
sg = chart.line_chart("SG", "sg", 30) sg = chart.line_chart("SG", "sg", 30)
show(row(column(sg))) show(column(sg))
class userForm(FlaskForm): class userForm(FlaskForm):
@ -39,6 +39,7 @@ class dataForm(FlaskForm):
beer_run_type = TextAreaField("Beer Type") beer_run_type = TextAreaField("Beer Type")
Date = DateField("Date:") Date = DateField("Date:")
sg = IntegerField("SG Reading") sg = IntegerField("SG Reading")
final_run = BooleanField("Final Reading?")
comment = TextAreaField("Any Comments?", validators=[Optional()]) comment = TextAreaField("Any Comments?", validators=[Optional()])
submit = SubmitField("Write it, Write it REAAAAAAL GOOOD") submit = SubmitField("Write it, Write it REAAAAAAL GOOOD")
@ -48,7 +49,7 @@ def index():
if form.validate_on_submit(): if form.validate_on_submit():
username = form.username.data username = form.username.data
password = form.password.data password = form.password.data
db = pool_database_query.pool_query() db = beer_database_query.pool_query()
if db.user_check(username, password): if db.user_check(username, password):
session['logged_in'] = True session['logged_in'] = True
return redirect("/updater") return redirect("/updater")
@ -62,17 +63,18 @@ def updater():
if 'logged_in' not in session: if 'logged_in' not in session:
return redirect("/") return redirect("/")
create_graphs() create_graphs()
query_db = pool_database_query.pool_query() query_db = beer_database_query.pool_query()
query = query_db.get_top(10, "sg") query = query_db.get_top(10, "sg")
form = dataForm() form = dataForm()
if form.validate_on_submit(): if form.validate_on_submit():
database = pool_database.pool_data() database = beer_database.beer_data()
new_record = { new_record = {
"date": f'{form.Date.data}', "date": f'{form.Date.data}',
"beer_run_id": f'{form.beer_run_id.data}', "beer_run_id": f'{form.beer_run_id.data}',
"beer_type": f'{form.beer_run_type.data}', "beer_type": f'{form.beer_run_type.data}',
"sg" : f'{form.sg.data}', "sg" : f'{form.sg.data}',
"final_reading" : F'{form.final_run.data}',
"comment": f'{form.comment.data}' "comment": f'{form.comment.data}'
} }
if database.record_exists(new_record["date"], new_record["beer_run_id"]): if database.record_exists(new_record["date"], new_record["beer_run_id"]):
@ -82,34 +84,38 @@ def updater():
if database.existing_record[field] != new_record[field]: if database.existing_record[field] != new_record[field]:
database.update_re_record(database.existing_record["_id"], field, new_record[field]) database.update_re_record(database.existing_record["_id"], field, new_record[field])
else: else:
if new_record["final_reading"] == "True":
final_run_value = True
else:
final_run_value = False
database.create_re_record(new_record["beer_run_id"], new_record["beer_type"], new_record["sg"], database.create_re_record(new_record["beer_run_id"], new_record["beer_type"], new_record["sg"],
new_record["date"], new_record["comment"]) new_record["date"], final_run_value, new_record["comment"])
return render_template("updater.html", list=query, form=form, success=True, updater_name = new_record["test_user"]) return render_template("updater.html", list=query, form=form, success=True, updater_name = "Saucy Beer Maker")
else: else:
return render_template("updater.html", list=query, form=form, sucess=False) return render_template("updater.html", list=query, form=form, sucess=False)
@app.route("/update_db", methods=["POST"]) # @app.route("/update_db", methods=["POST"])
def pool_data_update(): # def beer_data_update():
database = pool_database.pool_data() # database = beer_database.beer_data()
new_record = request.json # new_record = request.json
if database.record_exists(new_record["date"], new_record["test_user"]): # if database.record_exists(new_record["date"], new_record["test_user"]):
for field in database.existing_record: # for field in database.existing_record:
for new_field in new_record: # for new_field in new_record:
if field == new_field: # if field == new_field:
if database.existing_record[field] != new_record[field]: # if database.existing_record[field] != new_record[field]:
database.update_re_record(database.existing_record["_id"], field, new_record[field]) # database.update_re_record(database.existing_record["_id"], field, new_record[field])
else: # else:
database.create_re_record(new_record["beer_run_id"], new_record["beer_type"], new_record["sg"], # database.create_re_record(new_record["beer_run_id"], new_record["beer_type"], new_record["sg"],
new_record["date"], new_record["comment"]) # new_record["date"], new_record["comment"])
@app.route("/pool_top/<int:return_number>/<string:field>") # @app.route("/pool_top/<int:return_number>/<string:field>")
def user_detail(id): # def user_detail(id):
query_db = pool_database_query.pool_query() # query_db = beer_database_query.pool_query()
query = query_db.get_top(return_number, field) # query = query_db.get_top(return_number, field)
return jsonify([row.to_json() for row in query]) # return jsonify([row.to_json() for row in query])
if __name__ == '__main__': if __name__ == '__main__':
#app.run(host='0.0.0.0') #app.run(host='0.0.0.0')

View File

@ -11,7 +11,7 @@ class BeerCharts():
def line_chart(self, title, field, limit): def line_chart(self, title, field, limit):
data = self.db.pool_db data = self.db.beer_db
data = data.find({}).sort("date", -1).limit(limit) data = data.find({}).sort("date", -1).limit(limit)
dates = [] dates = []
data_list = [] data_list = []

View File

@ -15,14 +15,14 @@ class beer_data:
#we can get self.db.real_db etc #we can get self.db.real_db etc
self.db = db_conn() self.db = db_conn()
def record_exists(self, date, test_user): def record_exists(self, date, beer_run_id):
""" """
This function will accept an address This function will accept an address
if it find that address in the database it will return True if it find that address in the database it will return True
and set set the existing_record variable of the class to the and set set the existing_record variable of the class to the
queried record queried record
""" """
query = { "date" : f"{date}", "test_user": f"{test_user}"} query = { "date" : f"{date}", "beer_run_id": f"{beer_run_id}"}
record = self.db.beer_db.find_one(query) record = self.db.beer_db.find_one(query)
if record: if record:
self.existing_record = record self.existing_record = record
@ -31,7 +31,7 @@ class beer_data:
return False return False
def create_re_record(self, beer_run_id, beer_type, sg, date, comment=""): def create_re_record(self, beer_run_id, beer_type, sg, date, final_reading=False, comment=""):
""" """
create_re_record creates a whole new record create_re_record creates a whole new record
takes the required 7 inputs takes the required 7 inputs
@ -51,6 +51,7 @@ class beer_data:
"beer_type": f"{beer_type}", "beer_type": f"{beer_type}",
"sg": f"{sg}", "sg": f"{sg}",
"date": f"{date}", "date": f"{date}",
"final_reading": f"{final_reading}",
"comment": f"{comment}" "comment": f"{comment}"
} }

View File

@ -8,7 +8,7 @@ class db_conn:
self.db_host = os.getenv('MONGO_HOST') self.db_host = os.getenv('MONGO_HOST')
self.client = self.get_client() self.client = self.get_client()
self.db = self.client['beer_db'] self.db = self.client['beer_db']
self.pool_db = self.db['beer_data'] self.beer_db = self.db['beer_data']
self.users = self.db['users'] self.users = self.db['users']
self.inspections = self.db['inspections_db'] self.inspections = self.db['inspections_db']

View File

@ -49,7 +49,8 @@
<td> <td>
<div class="container"> <div class="container">
<div class= "col-xs-12 col-sm-12 col-md-12"> <div class= "col-xs-12 col-sm-12 col-md-12">
<iframe style="width: 100vw;height: 80vh;position: relative;" src="static/data_plot.html" frameborder="0" allowfullscreen> <iframe style="width: 100vw; height: 40vh;" src="static/data_plot.html" frameborder="0" allowfullscreen>
<!--<iframe style="width: 100vw;height: 80vh;position: relative;" src="static/data_plot.html" frameborder="0" allowfullscreen>-->
</iframe> </iframe>
</div> </div>
</div> </div>