diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/routes.py | 7 | ||||
| -rw-r--r-- | app/tables/workout.py | 22 | ||||
| -rw-r--r-- | app/templates/home.html | 78 | ||||
| -rw-r--r-- | app/templates/workout/manage.html | 6 |
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 %} |
