summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/routes.py7
-rw-r--r--app/tables/workout.py22
-rw-r--r--app/templates/home.html78
-rw-r--r--app/templates/workout/manage.html6
4 files changed, 57 insertions, 56 deletions
diff --git a/app/routes.py b/app/routes.py
index 36fb0ba..8a2346a 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -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,8 @@ def createWorkout():
flash("Workout with this name already exists", "danger")
return render_template('workout/create.html', form=form)
+
+@app.route("/workout/manage", methods=['GET'])
+@login_required
+def manageWorkout():
+ return render_template('workout/manage.html')
diff --git a/app/tables/workout.py b/app/tables/workout.py
index 81f9a68..b86a3db 100644
--- a/app/tables/workout.py
+++ b/app/tables/workout.py
@@ -4,20 +4,38 @@ from app import db, login_manager
class Exercise(db.Model):
__tablename__ = 'exercises'
id = db.Column(db.Integer, primary_key=True)
+ name = db.Column(db.String(100), nullable=False)
+ sets = db.Column(db.Integer)
+ reps = db.Column(db.Integer)
+ # Workout Relationship
+ workout_id = db.Column(db.Integer, db.ForeignKey('workouts.id'))
+
+ def __init__(self, name, sets, reps):
+ self.name = name
+ self.sets = sets
+ self.reps = reps
+
+ def __repr__(self):
+ return f'<Exercise {self.name} {self.sets}x{self.reps}>'
# Represents a singular workout
class Workout(db.Model):
__tablename__ = 'workouts'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
-
- # User Relationship
+ # foreign keys
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
+ # relationships
+ exercises = db.relationship("Exercise", backref='workout', lazy='dynamic')
def __init__(self, user, name, exercises):
self.name = name
self.user_id = user.id
+ # Create exercises
+ for exercise in exercises:
+ self.exercises.append(Exercise(exercise['name'], exercise['sets'], exercise['reps']))
+
def __repr__(self):
return f'<Workout {self.name}>'
diff --git a/app/templates/home.html b/app/templates/home.html
index fb47a68..693e03b 100644
--- a/app/templates/home.html
+++ b/app/templates/home.html
@@ -10,7 +10,7 @@
Hello, {{ current_user.username }}.
</h1>
<h2 class="subtitle">
- %subtitle%
+ Welcome Back
</h2>
</div>
</div>
@@ -49,6 +49,30 @@
<div class="card events-card">
<header class="card-header">
<p class="card-header-title">
+ My Workouts
+ </p>
+ </header>
+ <div class="card-table">
+ <div class="content">
+ <table class="table is-fullwidth is-striped">
+ <tbody>
+ {% for workout in current_user.workouts %}
+ <tr>
+ <td>{{ workout.name }}</td>
+ <td>{{ workout.exercises.count() }} exercises</td>
+ <td class="level-right"><a class="button is-small is-primary" href="#">Edit</a></td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="column is-6">
+ <div class="card events-card">
+ <header class="card-header">
+ <p class="card-header-title">
Recent Workouts
</p>
</header>
@@ -80,58 +104,6 @@
</footer>
</div>
</div>
- <div class="column is-6">
- <div class="card">
- <header class="card-header">
- <p class="card-header-title">
- Inventory Search
- </p>
- <a href="#" class="card-header-icon" aria-label="more options">
- <span class="icon">
- <i class="fa fa-angle-down" aria-hidden="true"></i>
- </span>
- </a>
- </header>
- <div class="card-content">
- <div class="content">
- <div class="control has-icons-left has-icons-right">
- <input class="input is-large" type="text" placeholder="">
- <span class="icon is-medium is-left">
- <i class="fa fa-search"></i>
- </span>
- <span class="icon is-medium is-right">
- <i class="fa fa-check"></i>
- </span>
- </div>
- </div>
- </div>
- </div>
- <div class="card">
- <header class="card-header">
- <p class="card-header-title">
- User Search
- </p>
- <a href="#" class="card-header-icon" aria-label="more options">
- <span class="icon">
- <i class="fa fa-angle-down" aria-hidden="true"></i>
- </span>
- </a>
- </header>
- <div class="card-content">
- <div class="content">
- <div class="control has-icons-left has-icons-right">
- <input class="input is-large" type="text" placeholder="">
- <span class="icon is-medium is-left">
- <i class="fa fa-search"></i>
- </span>
- <span class="icon is-medium is-right">
- <i class="fa fa-check"></i>
- </span>
- </div>
- </div>
- </div>
- </div>
- </div>
</div>
</div>
diff --git a/app/templates/workout/manage.html b/app/templates/workout/manage.html
new file mode 100644
index 0000000..95f03f5
--- /dev/null
+++ b/app/templates/workout/manage.html
@@ -0,0 +1,6 @@
+{% extends 'base/layout.html' %}
+
+{% block content %}
+<div class="container">
+</div>
+{% endblock %}