summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/forms/workout.py18
-rw-r--r--app/routes/workout.py16
2 files changed, 28 insertions, 6 deletions
diff --git a/app/forms/workout.py b/app/forms/workout.py
index 8714d5b..45d7f01 100644
--- a/app/forms/workout.py
+++ b/app/forms/workout.py
@@ -14,6 +14,18 @@ from wtforms import (
from wtforms.validators import DataRequired, Email, Optional
# /workout/create
+
+
+class ExerciseEditForm(Form):
+ id = HiddenField("id", [Optional()])
+ name = StringField("name", [Optional()])
+ sets = IntegerField("sets", [Optional()])
+ units = FloatField("units", [Optional()])
+ type = SelectField(
+ "type", [Optional()], choices=[("reps", "Reps"), ("time", "Time")]
+ )
+
+
class ExerciseCreateForm(Form):
id = HiddenField("id", [Optional()])
name = StringField("name", [DataRequired()])
@@ -29,7 +41,13 @@ class WorkoutCreateForm(FlaskForm):
exercises = FieldList(FormField(ExerciseCreateForm), min_entries=1)
+class WorkoutEditForm(FlaskForm):
+ name = StringField("name", [DataRequired()])
+ exercises = FieldList(FormField(ExerciseEditForm), min_entries=1)
+
# /workout/record
+
+
class SetForm(Form):
lbs = FloatField("lbs", [Optional()])
units = IntegerField("units", [Optional()])
diff --git a/app/routes/workout.py b/app/routes/workout.py
index 767603e..d03173e 100644
--- a/app/routes/workout.py
+++ b/app/routes/workout.py
@@ -2,7 +2,7 @@ from app import app, db
from datetime import datetime
from flask import render_template, redirect, request, url_for, flash
from flask_login import current_user, login_required
-from forms import WorkoutCreateForm, WorkoutRecordForm
+from forms import WorkoutCreateForm, WorkoutRecordForm, WorkoutEditForm
from tables import Exercise, User, Workout, WorkoutRecord, SetRecord
@@ -14,7 +14,8 @@ def workout_create():
if form.validate_on_submit():
# Make sure the user doesn't already have a workout with this name
- workout = Workout.query.filter_by(user_id=current_user.id, name=name).first()
+ workout = Workout.query.filter_by(
+ user_id=current_user.id, name=name).first()
if not workout:
# TODO: add exercises
workout = Workout(
@@ -42,7 +43,7 @@ def workout_edit(workout_id=None):
if not workout:
return redirect(url_for("home"))
- form = WorkoutCreateForm()
+ form = WorkoutEditForm()
if form.validate_on_submit():
# Form has been submitted, write changes
@@ -61,6 +62,10 @@ def workout_edit(workout_id=None):
workout_id=workout.id, id=int(id)
).first()
+ if (not name or (not sets and not units)):
+ workout.exercises.remove(exercise)
+ continue
+
if not exercise:
continue
@@ -71,9 +76,8 @@ def workout_edit(workout_id=None):
exercise.type = type
else:
# Create new exercise
- workout.exercises.append(Exercise(name, sets, units, type))
-
- # FIXME: support deleting exercises
+ if (name and sets and units and type):
+ workout.exercises.append(Exercise(name, sets, units, type))
# Write changes to database
db.session.commit()