Load workouts from user object in get_workouts_for_user method

This commit is contained in:
Peter Stockings
2023-10-19 23:07:27 +11:00
parent 0c8fca4642
commit 86930f1f88

18
app.py
View File

@@ -6,8 +6,6 @@ import humanize
from dateutil.parser import isoparse from dateutil.parser import isoparse
import sparklines import sparklines
import os import os
import time
from sqlalchemy import func
from datetime import datetime, timedelta from datetime import datetime, timedelta
import io import io
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
@@ -147,7 +145,7 @@ def delete_user(user_id):
def workouts(user_id): def workouts(user_id):
user = User.query.get(user_id) user = User.query.get(user_id)
if request.method == 'GET': if request.method == 'GET':
workouts_data = get_workouts_for_user(user, user.workouts) workouts_data = get_workouts_for_user(user)
return render_template('workouts_list.html', workouts=workouts_data) return render_template('workouts_list.html', workouts=workouts_data)
elif request.method == 'POST': elif request.method == 'POST':
@@ -274,7 +272,7 @@ def delete_workout(user_id, workout_id):
@app.route('/user/<int:user_id>/workouts', methods=['GET']) @app.route('/user/<int:user_id>/workouts', methods=['GET'])
def workouts_for_user(user_id): def workouts_for_user(user_id):
user = User.query.get(user_id) user = User.query.get(user_id)
workouts_data = get_workouts_for_user(user, user.workouts) workouts_data = get_workouts_for_user(user)
return render_template('workouts_list.html', workouts=workouts_data) return render_template('workouts_list.html', workouts=workouts_data)
@@ -294,7 +292,7 @@ def update_users_bike(user_id):
@ app.route('/user/<int:user_id>/calendar', methods=['GET']) @ app.route('/user/<int:user_id>/calendar', methods=['GET'])
def calendar_view(user_id): def calendar_view(user_id):
user = User.query.get(user_id) user = User.query.get(user_id)
workouts = get_workouts_for_user(user, user.workouts) workouts = get_workouts_for_user(user)
date = request.args.get('date', default=datetime.now().date(), type=toDate) date = request.args.get('date', default=datetime.now().date(), type=toDate)
calendar_month = generate_calendar_monthly_view(workouts, date) calendar_month = generate_calendar_monthly_view(workouts, date)
return render_template('partials/calendar.html', calendar_month=calendar_month, user_id=user_id) return render_template('partials/calendar.html', calendar_month=calendar_month, user_id=user_id)
@@ -303,7 +301,7 @@ def calendar_view(user_id):
@ app.route("/user/<int:user_id>/workout/list", methods=['GET']) @ app.route("/user/<int:user_id>/workout/list", methods=['GET'])
def workout_list(user_id): def workout_list(user_id):
user = User.query.get(user_id) user = User.query.get(user_id)
workouts = get_workouts_for_user(user, user.workouts) workouts = get_workouts_for_user(user)
return render_template('partials/workouts_list_fragment.html', workouts=workouts, user_id=user_id, workouts_all_loaded=True) return render_template('partials/workouts_list_fragment.html', workouts=workouts, user_id=user_id, workouts_all_loaded=True)
@@ -347,26 +345,24 @@ def render_users_and_workouts():
users = User.query.all() users = User.query.all()
users_data = [generate_user_data(user, get_workouts_for_user( users_data = [generate_user_data(user, get_workouts_for_user(
user, user.workouts)) for user in users] user)) for user in users]
template_name = 'users_and_workouts_wrapper.html' if htmx else 'users_and_workouts.html' template_name = 'users_and_workouts_wrapper.html' if htmx else 'users_and_workouts.html'
return render_template(template_name, users=users_data, bikes=Bike.query.all()) return render_template(template_name, users=users_data, bikes=Bike.query.all())
def get_workouts_for_user(user, workouts): def get_workouts_for_user(user):
""" """
Retrieve view data for all workouts of a user. Retrieve view data for all workouts of a user.
Parameters: Parameters:
- user: The user object. - user: The user object.
- workouts: A list of all user workouts.
Returns: Returns:
- list: A list of view data for valid workouts. - list: A list of view data for valid workouts.
""" """
return [get_workout_view_data(workout, user) for workout in workouts if get_workout_view_data(workout, user)] return [get_workout_view_data(workout, user) for workout in user.workouts if get_workout_view_data(workout, user)]
def format_workout_data(workout, user): def format_workout_data(workout, user):