Only display column for exercise if the person has completed a topset with said exercise
This commit is contained in:
19
app.py
19
app.py
@@ -4,7 +4,7 @@ from flask import Flask, render_template, redirect, request, url_for
|
|||||||
import jinja_partials
|
import jinja_partials
|
||||||
from decorators import validate_person, validate_topset, validate_workout
|
from decorators import validate_person, validate_topset, validate_workout
|
||||||
from db import DataBase
|
from db import DataBase
|
||||||
from utils import get_people_and_exercise_rep_maxes, convert_str_to_date, get_earliest_and_latest_workout_date, filter_workout_topsets
|
from utils import get_people_and_exercise_rep_maxes, convert_str_to_date, get_earliest_and_latest_workout_date, filter_workout_topsets, get_exercise_ids_from_workouts
|
||||||
from flask_htmx import HTMX
|
from flask_htmx import HTMX
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -49,21 +49,16 @@ def get_person(person_id):
|
|||||||
person['Workouts'] = [filter_workout_topsets(workout, selected_exercise_ids) for workout in person['Workouts'] if
|
person['Workouts'] = [filter_workout_topsets(workout, selected_exercise_ids) for workout in person['Workouts'] if
|
||||||
workout['StartDate'] <= max_date and workout['StartDate'] >= min_date]
|
workout['StartDate'] <= max_date and workout['StartDate'] >= min_date]
|
||||||
|
|
||||||
if selected_exercise_ids:
|
active_exercise_ids = get_exercise_ids_from_workouts(person['Workouts'])
|
||||||
filtered_exercises = filter(
|
|
||||||
lambda e: e['ExerciseId'] in selected_exercise_ids, person['Exercises'])
|
|
||||||
person['FilteredExercises'] = list(filtered_exercises)
|
|
||||||
if htmx:
|
|
||||||
return render_template('partials/page/person.html',
|
|
||||||
person=person, is_filtered=True, selected_exercise_ids=selected_exercise_ids, max_date=max_date, min_date=min_date), 200, {"HX-Trigger": "updatedPeople"}
|
|
||||||
|
|
||||||
return render_template('person.html', person=person, is_filtered=True, selected_exercise_ids=selected_exercise_ids, max_date=max_date, min_date=min_date)
|
|
||||||
|
|
||||||
|
filtered_exercises = filter(
|
||||||
|
lambda e: e['ExerciseId'] in active_exercise_ids, person['Exercises'])
|
||||||
|
person['FilteredExercises'] = list(filtered_exercises)
|
||||||
if htmx:
|
if htmx:
|
||||||
return render_template('partials/page/person.html',
|
return render_template('partials/page/person.html',
|
||||||
person=person, is_filtered=False, max_date=max_date, min_date=min_date), 200, {"HX-Trigger": "updatedPeople"}
|
person=person, is_filtered=True, selected_exercise_ids=active_exercise_ids, max_date=max_date, min_date=min_date), 200, {"HX-Trigger": "updatedPeople"}
|
||||||
|
|
||||||
return render_template('person.html', person=person, max_date=max_date, min_date=min_date)
|
return render_template('person.html', person=person, is_filtered=True, selected_exercise_ids=active_exercise_ids, max_date=max_date, min_date=min_date)
|
||||||
|
|
||||||
|
|
||||||
@ app.route("/person/<int:person_id>/workout", methods=['POST'])
|
@ app.route("/person/<int:person_id>/workout", methods=['POST'])
|
||||||
|
|||||||
9
utils.py
9
utils.py
@@ -138,3 +138,12 @@ def filter_workout_topsets(workout, selected_exercise_ids):
|
|||||||
workout['TopSets'] = [topset for topset in workout['TopSets']
|
workout['TopSets'] = [topset for topset in workout['TopSets']
|
||||||
if topset['ExerciseId'] in selected_exercise_ids]
|
if topset['ExerciseId'] in selected_exercise_ids]
|
||||||
return workout
|
return workout
|
||||||
|
|
||||||
|
|
||||||
|
def get_exercise_ids_from_workouts(workouts):
|
||||||
|
return list(set(flatten_list(list(map(lambda x: list(
|
||||||
|
map(lambda y: y['ExerciseId'], x['TopSets'])), workouts)))))
|
||||||
|
|
||||||
|
|
||||||
|
def flatten_list(list_of_lists):
|
||||||
|
return [item for sublist in list_of_lists for item in sublist]
|
||||||
|
|||||||
Reference in New Issue
Block a user