Removed extra db call for workouts for user
This commit is contained in:
35
app.py
35
app.py
@@ -135,12 +135,12 @@ def delete_user(user_id):
|
||||
|
||||
@app.route('/user/<int:user_id>/workouts', methods=['GET', 'POST'])
|
||||
def workouts(user_id):
|
||||
user = User.query.get(user_id)
|
||||
if request.method == 'GET':
|
||||
workouts_data = get_workouts_for_user(user_id)
|
||||
workouts_data = get_workouts_for_user(user)
|
||||
return render_template('workouts_list.html', workouts=workouts_data)
|
||||
|
||||
elif request.method == 'POST':
|
||||
user = User.query.get(user_id)
|
||||
app.logger.info(f'Creating workout for user {user.name} ({user.id})')
|
||||
|
||||
data = request.json
|
||||
@@ -262,7 +262,8 @@ def delete_workout(user_id, workout_id):
|
||||
|
||||
@app.route('/user/<int:user_id>/workouts', methods=['GET'])
|
||||
def workouts_for_user(user_id):
|
||||
workouts_data = get_workouts_for_user(user_id)
|
||||
user = User.query.get(user_id)
|
||||
workouts_data = get_workouts_for_user(user)
|
||||
return render_template('workouts_list.html', workouts=workouts_data)
|
||||
|
||||
|
||||
@@ -281,7 +282,8 @@ def update_users_bike(user_id):
|
||||
|
||||
@ app.route('/user/<int:user_id>/calendar', methods=['GET'])
|
||||
def calendar_view(user_id):
|
||||
workouts = get_workouts_for_user(user_id)
|
||||
user = User.query.get(user_id)
|
||||
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)
|
||||
@@ -289,7 +291,8 @@ def calendar_view(user_id):
|
||||
|
||||
@ app.route("/user/<int:user_id>/workout/list", methods=['GET'])
|
||||
def workout_list(user_id):
|
||||
workouts = get_workouts_for_user(user_id)
|
||||
user = User.query.get(user_id)
|
||||
workouts = get_workouts_for_user(user)
|
||||
return render_template('partials/workouts_list_fragment.html', workouts=workouts, user_id=user_id, workouts_all_loaded=True)
|
||||
|
||||
|
||||
@@ -305,7 +308,7 @@ def render_users_and_workouts():
|
||||
users = User.query.all()
|
||||
users_data = []
|
||||
for user in users:
|
||||
workouts = get_workouts_for_user(user.id)
|
||||
workouts = get_workouts_for_user(user)
|
||||
if not workouts:
|
||||
user_data = {
|
||||
'id': user.id,
|
||||
@@ -336,18 +339,18 @@ def render_users_and_workouts():
|
||||
return render_template('users_and_workouts.html', users=users_data, bikes=Bike.query.all())
|
||||
|
||||
|
||||
def get_workouts_for_user(user_id, max_date=None):
|
||||
user = User.query.get(user_id)
|
||||
workouts_data = []
|
||||
workouts = Workout.query.filter_by(user_id=user_id).order_by(
|
||||
Workout.created_at.desc()).all()
|
||||
def get_workouts_for_user(user):
|
||||
"""
|
||||
Retrieve view data for all workouts of a user.
|
||||
|
||||
for workout in workouts:
|
||||
workout_data = get_workout_view_data(workout, user)
|
||||
if workout_data:
|
||||
workouts_data.append(workout_data)
|
||||
Parameters:
|
||||
- user: The user object with a 'workouts' attribute containing all user workouts.
|
||||
|
||||
return workouts_data
|
||||
Returns:
|
||||
- list: A list of view data for valid workouts.
|
||||
"""
|
||||
|
||||
return [get_workout_view_data(workout, user) for workout in user.workouts if get_workout_view_data(workout, user)]
|
||||
|
||||
|
||||
def get_workout_view_data(workout, user):
|
||||
|
||||
Reference in New Issue
Block a user