From d0c2bb02d91382d99d72ce5e80b321a53a80e576 Mon Sep 17 00:00:00 2001 From: stilbruch Date: Wed, 6 Apr 2022 13:22:43 -0500 Subject: Added form classes for "create workout" form --- app/forms.py | 13 ------------- app/forms/__init__.py | 2 ++ app/forms/user.py | 13 +++++++++++++ app/forms/workout.py | 13 +++++++++++++ app/routes.py | 13 +++++++++++-- app/templates/workout/create.html | 26 +++++++++++++++++++------- 6 files changed, 58 insertions(+), 22 deletions(-) delete mode 100644 app/forms.py create mode 100644 app/forms/__init__.py create mode 100644 app/forms/user.py create mode 100644 app/forms/workout.py diff --git a/app/forms.py b/app/forms.py deleted file mode 100644 index 12e4bf8..0000000 --- a/app/forms.py +++ /dev/null @@ -1,13 +0,0 @@ -from flask_wtf import FlaskForm -from wtforms import StringField, PasswordField, BooleanField -from wtforms.validators import DataRequired, Email - -class LoginForm(FlaskForm): - username = StringField("username", validators=[DataRequired()]) - password = PasswordField("password", validators=[DataRequired()]) - #remember_me = BooleanField() - -class RegisterForm(FlaskForm): - username = StringField("username", validators=[DataRequired()]) - password = PasswordField("password", validators=[DataRequired()]) - email = StringField("email", validators=[DataRequired(), Email()]) diff --git a/app/forms/__init__.py b/app/forms/__init__.py new file mode 100644 index 0000000..b904c84 --- /dev/null +++ b/app/forms/__init__.py @@ -0,0 +1,2 @@ +from forms.user import * +from forms.workout import * diff --git a/app/forms/user.py b/app/forms/user.py new file mode 100644 index 0000000..12e4bf8 --- /dev/null +++ b/app/forms/user.py @@ -0,0 +1,13 @@ +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField, BooleanField +from wtforms.validators import DataRequired, Email + +class LoginForm(FlaskForm): + username = StringField("username", validators=[DataRequired()]) + password = PasswordField("password", validators=[DataRequired()]) + #remember_me = BooleanField() + +class RegisterForm(FlaskForm): + username = StringField("username", validators=[DataRequired()]) + password = PasswordField("password", validators=[DataRequired()]) + email = StringField("email", validators=[DataRequired(), Email()]) diff --git a/app/forms/workout.py b/app/forms/workout.py new file mode 100644 index 0000000..4a96b32 --- /dev/null +++ b/app/forms/workout.py @@ -0,0 +1,13 @@ +from flask_wtf import FlaskForm, Form +from wtforms import FieldList, FormField, IntegerField, StringField +from wtforms.validators import DataRequired, Email + +# Subclass, not used directly +class ExerciseForm(Form): + name = StringField("name", [DataRequired()]) + sets = IntegerField("sets", [DataRequired()]) + reps = IntegerField("reps", [DataRequired()]) + +class WorkoutCreateForm(FlaskForm): + name = StringField("name", [DataRequired()]) + exercises = FieldList(FormField(ExerciseForm), min_entries=1) diff --git a/app/routes.py b/app/routes.py index 336218c..1a30944 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,7 +1,7 @@ from app import app, db from flask import render_template, redirect, url_for, flash from flask_login import login_user, login_required, logout_user -from forms import LoginForm, RegisterForm +from forms import LoginForm, RegisterForm, WorkoutCreateForm from tables.user import User @app.route("/", methods=["GET"]) @@ -62,5 +62,14 @@ def register(): @app.route("/workout/create", methods=['GET', 'POST']) @login_required def createWorkout(): - form = RegisterForm() + form = WorkoutCreateForm() + + # Load data from form + print(form.name.data) + for entry in form.exercises.entries: + print(entry.data) + + if form.validate_on_submit(): + print("Valid") + return render_template('workout/create.html', form=form) diff --git a/app/templates/workout/create.html b/app/templates/workout/create.html index b29e7b6..eaf5f39 100644 --- a/app/templates/workout/create.html +++ b/app/templates/workout/create.html @@ -7,7 +7,7 @@

- + @@ -20,7 +20,7 @@

- + @@ -28,7 +28,15 @@

- + + + + +

+
+
+

+ @@ -66,15 +74,19 @@ function handleAdd() { rowsDiv = document.getElementById("rows"); newRow = rowsDiv.children[0].cloneNode(true); - rowId++; + exerciseNameInput = newRow.children[0].children[0].children[0].children[0]; exerciseNameInput.value = ''; - exerciseNameInput.name = 'exercise-' + rowId; + exerciseNameInput.name = 'exercises-' + rowId + '-name'; + + exerciseSetInput = newRow.children[0].children[1].children[0].children[0]; + exerciseSetInput.value = ''; + exerciseSetInput.name = 'exercises-' + rowId + '-sets'; - exerciseRepInput = newRow.children[0].children[1].children[0].children[0]; + exerciseRepInput = newRow.children[0].children[2].children[0].children[0]; exerciseRepInput.value = ''; - exerciseRepInput.name = 'reps-' + rowId; + exerciseRepInput.name = 'exercises-' + rowId + '-reps'; rowsDiv.append(newRow); } -- cgit v1.2.3