summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorstilbruch <stilbruch@protonmail.com>2022-04-06 13:50:32 -0500
committerstilbruch <stilbruch@protonmail.com>2022-04-06 13:50:32 -0500
commit45bf2ad8707b67b2f756c80edb877a6bfe3897fb (patch)
tree4ebbb8eea62af889c940e561b75c4175e6d75965 /app
parentd0c2bb02d91382d99d72ce5e80b321a53a80e576 (diff)
downloadStrengthy-45bf2ad8707b67b2f756c80edb877a6bfe3897fb.tar.xz
Strengthy-45bf2ad8707b67b2f756c80edb877a6bfe3897fb.zip
Workout table and user relationship works
Diffstat (limited to 'app')
-rw-r--r--app/routes.py22
-rw-r--r--app/tables/__init__.py2
-rw-r--r--app/tables/user.py2
-rw-r--r--app/tables/workout.py26
-rw-r--r--app/templates/home.html2
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>