Swtich from person list to new overview page
This commit is contained in:
45
app.py
45
app.py
@@ -6,7 +6,7 @@ import jinja_partials
|
||||
from jinja2_fragments import render_block
|
||||
from decorators import validate_person, validate_topset, validate_workout
|
||||
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, first_and_last_visible_days_in_month, generate_plot
|
||||
from utils import get_people_and_exercise_rep_maxes, convert_str_to_date, first_and_last_visible_days_in_month, generate_plot
|
||||
from flask_htmx import HTMX
|
||||
import minify_html
|
||||
from urllib.parse import quote
|
||||
@@ -75,45 +75,6 @@ def get_person_list():
|
||||
people = db.get_people_and_workout_count(-1)
|
||||
return render_template('partials/people_link.html', people=people)
|
||||
|
||||
|
||||
@ app.route("/person/<int:person_id>/workout/list", methods=['GET'])
|
||||
@ validate_person
|
||||
def get_person(person_id):
|
||||
person = db.get_person(person_id)
|
||||
tags = db.get_tags_for_person(person_id)
|
||||
|
||||
(min_date, max_date) = get_earliest_and_latest_workout_date(person)
|
||||
|
||||
min_date = request.args.get(
|
||||
'min_date', default=min_date, type=convert_str_to_date)
|
||||
max_date = request.args.get(
|
||||
'max_date', default=max_date, type=convert_str_to_date)
|
||||
|
||||
selected_exercise_ids = request.args.getlist('exercise_id', type=int)
|
||||
all_exercise_ids_for_person = [e['ExerciseId']
|
||||
for e in person['Exercises']]
|
||||
|
||||
if not selected_exercise_ids and htmx.trigger_name != 'exercise_id':
|
||||
selected_exercise_ids = all_exercise_ids_for_person
|
||||
|
||||
person['Workouts'] = [filter_workout_topsets(workout, selected_exercise_ids) for workout in person['Workouts'] if
|
||||
workout['StartDate'] <= max_date and workout['StartDate'] >= min_date]
|
||||
|
||||
# Filter out workouts that dont contain any of the selected exercises
|
||||
person['Workouts'] = [workout for workout in person['Workouts'] if
|
||||
workout['TopSets']]
|
||||
|
||||
filtered_exercises = filter(
|
||||
lambda e: e['ExerciseId'] in selected_exercise_ids, person['Exercises'])
|
||||
person['FilteredExercises'] = list(filtered_exercises)
|
||||
|
||||
person['ExerciseProgressGraphs'] = list(filter(lambda e: e['ExerciseId'] in selected_exercise_ids, person['ExerciseProgressGraphs']))
|
||||
|
||||
if htmx:
|
||||
return render_block(app.jinja_env, 'person.html', 'content', person=person, selected_exercise_ids=selected_exercise_ids, max_date=max_date, min_date=min_date, tags=tags), 200, {"HX-Trigger": "refreshStats"}
|
||||
|
||||
return render_template('person.html', person=person, selected_exercise_ids=selected_exercise_ids, max_date=max_date, min_date=min_date, tags=tags), 200, {"HX-Trigger": "refreshStats"}
|
||||
|
||||
@ app.route("/person/<int:person_id>/workout/overview", methods=['GET'])
|
||||
def person_overview(person_id):
|
||||
min_date = request.args.get('min_date', type=convert_str_to_date)
|
||||
@@ -154,8 +115,8 @@ def get_calendar(person_id):
|
||||
'date'), '%Y-%m-%d') or date.today()
|
||||
selected_view = request.args.get('view') or 'month'
|
||||
|
||||
if selected_view == 'all':
|
||||
return redirect(url_for('get_person', person_id=person_id))
|
||||
if selected_view == 'overview':
|
||||
return redirect(url_for('person_overview', person_id=person_id))
|
||||
elif selected_view == 'notes':
|
||||
return redirect(url_for('get_person_notes', person_id=person_id))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user