From 6617b81fe391434468ea8d3df4fa1ec5536c84de Mon Sep 17 00:00:00 2001 From: Andrew Ridgway Date: Wed, 27 Mar 2024 16:33:08 +1000 Subject: [PATCH] ready for MVP deployment --- flask.Dockerfile | 4 +-- src/flask/mongo/build_db.py | 13 +++++-- src/flask/pool_data.py | 21 +++++++---- src/flask/templates/base.html | 30 ++++++++++++++++ src/flask/templates/updater.html | 60 +++++++++++++++++++------------- 5 files changed, 93 insertions(+), 35 deletions(-) create mode 100644 src/flask/templates/base.html diff --git a/flask.Dockerfile b/flask.Dockerfile index 665926d..91b103d 100644 --- a/flask.Dockerfile +++ b/flask.Dockerfile @@ -2,8 +2,8 @@ FROM pool_base_image as flask COPY requirements.txt . -ENV FLASK_ENV development -ENV FLASK_DEBUG 1 +#ENV FLASK_ENV development +#ENV FLASK_DEBUG 1 ENTRYPOINT ["flask", "--app", "/pool_data_web/src/flask/pool_data", "run", "--host=0.0.0.0"] diff --git a/src/flask/mongo/build_db.py b/src/flask/mongo/build_db.py index 108a4ff..261ae85 100644 --- a/src/flask/mongo/build_db.py +++ b/src/flask/mongo/build_db.py @@ -31,7 +31,7 @@ class pool_data: def create_re_record(self, ph, total_chlorine, free_chlorine, alkalinity, - date, test_user, salt=""): + date, test_user, temp, hardness, salt="", comment=""): """ create_re_record creates a whole new record takes the required 7 inputs @@ -41,7 +41,10 @@ class pool_data: 4. alkalinity 5. date 6. test_user - 7. salt (optional) + 7. temp + 8. hardness + 9. salt (optional) + 10. comment(optional) It will autogenerate the id string this string will be automatically selected on view in future @@ -54,8 +57,12 @@ class pool_data: "free_chlorine": f"{free_chlorine}", "alkalinity": f"{alkalinity}", "salt": f"{salt}", + "temp": f"{temp}", + "hardness": f"{hardness}", "date": f"{date}", - "test_user": f"{test_user}" + "test_user": f"{test_user}", + "comment": f"{comment}" + } self.db.pool_db.insert_one(insert_record) diff --git a/src/flask/pool_data.py b/src/flask/pool_data.py index 139b34f..78bf084 100644 --- a/src/flask/pool_data.py +++ b/src/flask/pool_data.py @@ -2,8 +2,9 @@ import mongo.build_db as pool_database import mongo.query_db as pool_database_query from flask import Flask, render_template, request, jsonify, redirect +from flask_wtf import FlaskForm, CSRFProtect from flask_bootstrap import Bootstrap5 -from wtforms import StringField, SubmitField +from wtforms import StringField, SubmitField, DateField, IntegerField, PasswordField, DecimalField, RadioField, TextAreaField from wtforms.validators import DataRequired, Length @@ -16,7 +17,7 @@ csrf = CSRFProtect(app) class userForm(FlaskForm): username = StringField("User Name?", validators=[DataRequired()]) - password = PasswordField("Password?", validators[DataRequired()]) + password = PasswordField("Password?") submit = SubmitField("Letsa GO!") class dataForm(FlaskForm): @@ -28,12 +29,15 @@ class dataForm(FlaskForm): free_chlorine = IntegerField("Free Chlorine:") alkalinity = DecimalField("Alkalinity:") salt = IntegerField("Salt:") + temp = DecimalField("Water Temperature") + hardness = IntegerField("Hardness") + comment = TextAreaField("Any Comments?") submit = SubmitField("Write it, Write it REAAAAAAL GOOOD") @app.route("/", methods=["GET","POST"]) def index(): form = userForm() - if form.validate_on_submit() + if form.validate_on_submit(): username = form.username.data password = form.password.data db = pool_database_query.pool_query() @@ -50,7 +54,7 @@ def updater(): query = query_db.get_top(10, "ph") form = dataForm() - if form.validate_on_submit() + if form.validate_on_submit(): database = pool_database.pool_data() new_record = { "ph": f'{form.PH.data}', @@ -60,6 +64,9 @@ def updater(): "salt": f'{form.salt.data}', "date": f'{form.Date.data}', "test_user": f'{form.test_user.data}', + "temp": f'{form.temp.data}', + "hardness": f'{form.hardness.data}', + "comment": f'{form.comment.data}' } if database.record_exists(new_record["date"], new_record["test_user"]): for field in database.existing_record: @@ -69,7 +76,8 @@ def updater(): database.update_re_record(database.existing_record["_id"], field, new_record[field]) else: database.create_re_record(new_record["ph"], new_record["total_chlorine"], new_record["free_chlorine"], - new_record["alkalinity"], new_record["date"], new_record["test_user"], new_record["salt"]) + new_record["alkalinity"], new_record["date"], new_record["test_user"], + new_record["temp"], new_record["hardness"], new_record["salt"], new_record["comment"]) return render_template("updater.html", list=query, form=form) @@ -88,7 +96,8 @@ def pool_data_update(): database.update_re_record(database.existing_record["_id"], field, new_record[field]) else: database.create_re_record(new_record["ph"], new_record["total_chlorine"], new_record["free_chlorine"], - new_record["alkalinity"], new_record["date"], new_record["test_user"], new_record["salt"]) + new_record["alkalinity"], new_record["date"], new_record["test_user"], + new_record["temp"], new_record["hardness"], new_record["salt"], new_record["comment"]) @app.route("/pool_top//") diff --git a/src/flask/templates/base.html b/src/flask/templates/base.html new file mode 100644 index 0000000..be59d47 --- /dev/null +++ b/src/flask/templates/base.html @@ -0,0 +1,30 @@ + + + + + + + + {% block title %} + Let there Be Pool Data + {% endblock %} + + + {{ bootstrap.load_css() }} + + + + + + +{% block content %} +{% endblock %} + + + +{{ bootstrap.load_js() }} + + diff --git a/src/flask/templates/updater.html b/src/flask/templates/updater.html index e871649..b9380ed 100644 --- a/src/flask/templates/updater.html +++ b/src/flask/templates/updater.html @@ -12,29 +12,41 @@ https://bootstrap-flask.readthedocs.io/ --> -
Input Data you want to store
-
-
- ( - - -
- {{ render_form(form) }} - - - {% for row in list %} -
- {% for key, value in row.items() %} - - - - - {% endfor %} -
{{ key }} {{ value }}
- {% endfor %} -
- - +
+
+
-
+

Input Data you want to store

+
+
+ + + +
+ {{ render_form(form) }} + +
+
+ + + {% for row in list %} +
+ {% for key, value in row.items() %} + + + + + {% endfor %} +
{{ key }} {{ value }}
+ {% endfor %} +
+
+
+ + + +
+
+
+
{% endblock %}