diff --git a/app.py b/app.py index 7ec0e98..a39c165 100644 --- a/app.py +++ b/app.py @@ -135,12 +135,12 @@ def delete_user(user_id): @app.route('/user//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//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//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//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):