diff options
Diffstat (limited to 'app/routes.py')
| -rw-r--r-- | app/routes.py | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/app/routes.py b/app/routes.py index 36fb0ba..1ff1023 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,5 +1,5 @@ from app import app, db -from flask import render_template, redirect, url_for, flash +from flask import render_template, redirect, request, url_for, flash from flask_login import current_user, login_user, login_required, logout_user from forms import LoginForm, RegisterForm, WorkoutCreateForm from tables import User, Workout @@ -70,7 +70,7 @@ def createWorkout(): workout = Workout.query.filter_by(user_id=current_user.id, name=name).first() if not workout: # TODO: add exercises - workout = Workout(current_user, name, None) + workout = Workout(current_user, name, [e.data for e in form.exercises.entries]) db.session.add(workout) db.session.commit() @@ -79,3 +79,35 @@ def createWorkout(): flash("Workout with this name already exists", "danger") return render_template('workout/create.html', form=form) + +@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) |
