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
import sparklines
import os
import time
from sqlalchemy import func
from datetime import datetime, timedelta
import io
from flask_sqlalchemy import SQLAlchemy
@@ -147,7 +145,7 @@ def delete_user(user_id):
def workouts(user_id):
user = User.query.get(user_id)
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)
elif request.method == 'POST':
@@ -274,7 +272,7 @@ def delete_workout(user_id, workout_id):
@app.route('/user/<int:user_id>/workouts', methods=['GET'])
def workouts_for_user(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)
@@ -294,7 +292,7 @@ def update_users_bike(user_id):
@ app.route('/user/<int:user_id>/calendar', methods=['GET'])
def calendar_view(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)
calendar_month = generate_calendar_monthly_view(workouts, date)
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'])
def workout_list(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)
@@ -347,26 +345,24 @@ def render_users_and_workouts():
users = User.query.all()
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'
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.
Parameters:
- user: The user object.
- workouts: A list of all user workouts.
Returns:
- 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):