diff options
| author | FivePixels <o5pxels@gmail.com> | 2022-04-23 15:58:33 -0500 |
|---|---|---|
| committer | FivePixels <o5pxels@gmail.com> | 2022-04-23 15:58:33 -0500 |
| commit | b45e96d88485f7c9a7b6281b781218e180a43e94 (patch) | |
| tree | f942eec8ed16ee48008c81d519639b9f761f5d34 /app/routes/workout.py | |
| parent | 628e47b4b8243fa7e84703f3f71c3de19c5baa65 (diff) | |
| parent | 4f1e55112138a1f3b4be3bf23e3740ae3effac35 (diff) | |
| download | Strengthy-b45e96d88485f7c9a7b6281b781218e180a43e94.tar.xz Strengthy-b45e96d88485f7c9a7b6281b781218e180a43e94.zip | |
Merge branch 'master' of stilbruch.xyz:strengthy
Diffstat (limited to 'app/routes/workout.py')
| -rw-r--r-- | app/routes/workout.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/app/routes/workout.py b/app/routes/workout.py new file mode 100644 index 0000000..8615156 --- /dev/null +++ b/app/routes/workout.py @@ -0,0 +1,77 @@ +from app import app, db +from flask import render_template, redirect, request, url_for, flash +from flask_login import current_user, login_required +from forms import LoginForm, RegisterForm, WorkoutCreateForm +from tables import User, Workout + +@app.route("/workout/create", methods=['GET', 'POST']) +@login_required +def createWorkout(): + form = WorkoutCreateForm() + name = form.name.data + + 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() + if not workout: + # TODO: add exercises + workout = Workout(current_user, name, [e.data for e in form.exercises.entries]) + db.session.add(workout) + db.session.commit() + + return redirect(url_for('home')); + else: + flash("Workout with this name already exists", "danger") + + return render_template('workout/create.html', form=form, title="Create a Workout") + +@app.route("/workout/edit", methods=['GET', 'POST']) +@login_required +def editWorkout(): + # Id is required + if 'id' not in request.args: + return redirect(url_for('home')) + + # Validate Id + workout = Workout.query.filter_by(id=int(request.args['id']), user_id=current_user.id).first() + if not workout: + return redirect(url_for('home')) + + form = WorkoutCreateForm() + + if form.validate_on_submit(): + # Form has been submitted, write changes + + workout.name = form.name.data + # TODO: Add exercise changes + + # Write changes to database + db.session.commit() + return redirect(url_for('home')); + else: + form.name.data = workout.name + form.exercises.pop_entry() # TODO: better way to do this? + + for exercise in workout.exercises: + form.exercises.append_entry(exercise) + + return render_template('workout/create.html', form=form, title=f'Edit Workout "{workout.name}"') + +@app.route("/workout/record", methods=['GET']) +@login_required +def recordWorkout(): + # Id is required + if 'id' not in request.args: + return redirect(url_for('home')) + + # Matching workout required + workout = Workout.query.filter_by(id=int(request.args['id']), user_id=current_user.id).first() + if not workout: + return redirect(url_for('home')); + + return render_template('workout/record.html', workout=workout, form=None) + +@app.route("/workout/select", methods=['GET']) +@login_required +def selectWorkout(): + return render_template('workout/select.html') |
