diff options
| -rw-r--r-- | app/routes.py | 22 | ||||
| -rw-r--r-- | app/tables/__init__.py | 2 | ||||
| -rw-r--r-- | app/tables/user.py | 2 | ||||
| -rw-r--r-- | app/tables/workout.py | 26 | ||||
| -rw-r--r-- | app/templates/home.html | 2 |
5 files changed, 37 insertions, 17 deletions
diff --git a/app/routes.py b/app/routes.py index 1a30944..36fb0ba 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,8 +1,8 @@ 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 flask_login import current_user, login_user, login_required, logout_user from forms import LoginForm, RegisterForm, WorkoutCreateForm -from tables.user import User +from tables import User, Workout @app.route("/", methods=["GET"]) def index(): @@ -63,13 +63,19 @@ def register(): @login_required def createWorkout(): form = WorkoutCreateForm() - - # Load data from form - print(form.name.data) - for entry in form.exercises.entries: - print(entry.data) + name = form.name.data if form.validate_on_submit(): - print("Valid") + # 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, None) + 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) diff --git a/app/tables/__init__.py b/app/tables/__init__.py new file mode 100644 index 0000000..e67eb21 --- /dev/null +++ b/app/tables/__init__.py @@ -0,0 +1,2 @@ +from tables.user import User +from tables.workout import * diff --git a/app/tables/user.py b/app/tables/user.py index d384fdb..cfffb80 100644 --- a/app/tables/user.py +++ b/app/tables/user.py @@ -13,6 +13,8 @@ class User(db.Model, UserMixin): password = db.Column(db.String(80)) email = db.Column(db.String(120), unique=True, nullable=False) + workouts = db.relationship("Workout", backref='user', lazy='dynamic') + def __init__(self, username, password, email): self.username = username self.password = generate_password_hash(password) diff --git a/app/tables/workout.py b/app/tables/workout.py index f3a41eb..81f9a68 100644 --- a/app/tables/workout.py +++ b/app/tables/workout.py @@ -1,19 +1,29 @@ from app import db, login_manager # Represents an individual exercise -class Exercise(db.Model) +class Exercise(db.Model): __tablename__ = 'exercises' id = db.Column(db.Integer, primary_key=True) # Represents a singular workout -class Workout(db.Model) +class Workout(db.Model): __tablename__ = 'workouts' id = db.Column(db.Integer, primary_key=True) - user_id = db.Column(db.Integer, db.ForeignKey('user.id')) + name = db.Column(db.String(100), nullable=False) + + # User Relationship + user_id = db.Column(db.Integer, db.ForeignKey('users.id')) + + def __init__(self, user, name, exercises): + self.name = name + self.user_id = user.id + + def __repr__(self): + return f'<Workout {self.name}>' # Connects workouts to it's exercises -class WorkoutExercise(db.Model) - __table__ = 'workout_exercises' - id = db.Column(db.Integer, primary_key=True) - workout_id = db.Column(db.Integer, db.ForeignKey('workout.id')) - exercise_id = db.Column(db.Integer, db.ForeignKey('exercise.id')) +#class WorkoutExercise(db.Model): +# __table__ = 'workout_exercises' +# id = db.Column(db.Integer, primary_key=True) +# workout_id = db.Column(db.Integer, db.ForeignKey('workouts.id')) +# exercise_id = db.Column(db.Integer, db.ForeignKey('exercises.id')) diff --git a/app/templates/home.html b/app/templates/home.html index 99da96c..fb47a68 100644 --- a/app/templates/home.html +++ b/app/templates/home.html @@ -31,7 +31,7 @@ </div> <div class="tile is-parent"> <article class="tile is-child box"> - <p class="title has-text-black">%workouts%</p> + <p class="title has-text-black">{{ current_user.workouts.count() }}</p> <p class="subtitle has-text-black">Workouts</p> </article> </div> |
