Refactor get workout call

This commit is contained in:
Peter Stockings
2023-12-09 17:00:45 +11:00
parent 1ff616f4e0
commit c702a2ba3d
3 changed files with 41 additions and 43 deletions

12
app.py
View File

@@ -141,7 +141,7 @@ def get_workout_modal(person_id, workout_id):
(person_tags, workout_tags, selected_workout_tag_ids) = db.get_workout_tags(
person_id, workout_id)
exercises = db.get_all_exercises()
return render_template('partials/workout_modal.html', workout=workout, person_tags=person_tags, workout_tags=workout_tags, selected_workout_tag_ids=selected_workout_tag_ids, exercises=exercises)
return render_template('partials/workout_modal.html', **workout, person_tags=person_tags, workout_tags=workout_tags, selected_workout_tag_ids=selected_workout_tag_ids, exercises=exercises)
@ app.route("/person/<int:person_id>/workout", methods=['POST'])
@@ -153,7 +153,7 @@ def create_workout(person_id):
person_id, new_workout_id)
exercises = db.get_all_exercises()
return render_template('partials/workout_modal.html',
workout=workout, person_tags=person_tags, workout_tags=workout_tags, selected_workout_tag_ids=selected_workout_tag_ids, exercises=exercises), 200, {"HX-Trigger": "updatedPeople"}
**workout, person_tags=person_tags, workout_tags=workout_tags, selected_workout_tag_ids=selected_workout_tag_ids, exercises=exercises), 200, {"HX-Trigger": "updatedPeople"}
@ app.route("/person/<int:person_id>/workout/<int:workout_id>/delete", methods=['DELETE'])
@@ -167,7 +167,7 @@ def delete_workout(person_id, workout_id):
@ validate_workout
def get_workout_start_date_edit_form(person_id, workout_id):
workout = db.get_workout(person_id, workout_id)
return render_template('partials/start_date.html', person_id=person_id, workout_id=workout_id, start_date=workout['StartDate'], is_edit=True)
return render_template('partials/start_date.html', person_id=person_id, workout_id=workout_id, start_date=workout['start_date'], is_edit=True)
@ app.route("/person/<int:person_id>/workout/<int:workout_id>/start_date", methods=['PUT'])
@@ -182,7 +182,7 @@ def update_workout_start_date(person_id, workout_id):
@ validate_workout
def get_workout_start_date(person_id, workout_id):
workout = db.get_workout(person_id, workout_id)
return render_template('partials/start_date.html', person_id=person_id, workout_id=workout_id, start_date=workout['StartDate'])
return render_template('partials/start_date.html', person_id=person_id, workout_id=workout_id, start_date=workout['start_date'])
@ app.route("/person/<int:person_id>/workout/<int:workout_id>/topset/<int:topset_id>", methods=['GET'])
@@ -343,7 +343,7 @@ def delete_tag(tag_id):
@ validate_workout
def get_workout_note_edit_form(person_id, workout_id):
workout = db.get_workout(person_id, workout_id)
return render_template('partials/workout_note.html', person_id=person_id, workout_id=workout_id, note=workout['Note'], is_edit=True)
return render_template('partials/workout_note.html', person_id=person_id, workout_id=workout_id, note=workout['note'], is_edit=True)
@ app.route("/person/<int:person_id>/workout/<int:workout_id>/note", methods=['PUT'])
@@ -358,7 +358,7 @@ def update_workout_note(person_id, workout_id):
@ validate_workout
def get_workout_note(person_id, workout_id):
workout = db.get_workout(person_id, workout_id)
return render_template('partials/workout_note.html', person_id=person_id, workout_id=workout_id, note=workout['Note'])
return render_template('partials/workout_note.html', person_id=person_id, workout_id=workout_id, note=workout['note'])
@ app.route("/person/<int:person_id>/workout/<int:workout_id>/tag/add", methods=['POST'])

34
db.py
View File

@@ -198,16 +198,16 @@ class DataBase():
def get_workout(self, person_id, workout_id):
topsets = self.execute("""
SELECT
P.person_id AS "PersonId",
P.name AS "PersonName",
W.workout_id AS "WorkoutId",
W.start_date AS "StartDate",
T.topset_id AS "TopSetId",
E.exercise_id AS "ExerciseId",
E.name AS "ExerciseName",
T.repetitions AS "Repetitions",
T.weight AS "Weight",
W.note AS "Note"
P.person_id,
P.name AS "person_name",
W.workout_id,
W.start_date,
T.topset_id,
E.exercise_id,
E.name AS "exercise_name",
T.repetitions,
T.weight,
W.note
FROM Person P
LEFT JOIN Workout W ON P.person_id=W.person_id
LEFT JOIN TopSet T ON W.workout_id=T.workout_id
@@ -216,15 +216,13 @@ class DataBase():
AND W.workout_id = %s
ORDER BY T.topset_id""", [person_id, workout_id])
note = next((t['Note'] for t in topsets), '')
return {
'PersonId': person_id,
'PersonName': next((t['PersonName'] for t in topsets), 'Unknown'),
'WorkoutId': workout_id,
'StartDate': topsets[0]['StartDate'],
'TopSets': [{"TopSetId": t['TopSetId'], "ExerciseId": t['ExerciseId'], "ExerciseName": t['ExerciseName'], "Weight": t['Weight'], "Repetitions": t['Repetitions']} for t in topsets if t['TopSetId'] is not None],
'Note': note
'person_id': person_id,
'person_name': topsets[0]['person_name'],
'workout_id': workout_id,
'start_date': topsets[0]['start_date'],
'top_sets': [{"topset_id": t['topset_id'], "exercise_id": t['exercise_id'], "exercise_name": t['exercise_name'], "weight": t['weight'], "repetitions": t['repetitions']} for t in topsets if t['topset_id'] is not None],
'note': topsets[0]['note']
}
def get_topset(self, topset_id):

View File

@@ -19,10 +19,10 @@
<div class="flex flex-col w-full">
<div class="flex items-center justify-between">
<div class="w-full">
<h3 class="text-xl font-bold text-gray-900">{{ workout['PersonName'] }}</h3>
<h3 class="text-xl font-bold text-gray-900">{{ person_name }}</h3>
{{ render_partial('partials/workout_tags.html', person_id=workout['PersonId'],
workout_id=workout['WorkoutId'],
{{ render_partial('partials/workout_tags.html', person_id=person_id,
workout_id=workout_id,
person_tags=person_tags, workout_tags=workout_tags,
selected_workout_tag_ids=selected_workout_tag_ids) }}
@@ -30,14 +30,14 @@
</div>
<div class="grid grid-cols-1 lg:grid-cols-2">
{{ render_partial('partials/start_date.html', person_id=workout['PersonId'],
workout_id=workout['WorkoutId'],
start_date=workout['StartDate']) }}
{{ render_partial('partials/start_date.html', person_id=person_id,
workout_id=workout_id,
start_date=start_date) }}
{{ render_partial('partials/workout_note.html', person_id=workout['PersonId'],
workout_id=workout['WorkoutId'],
note=workout['Note']) }}
{{ render_partial('partials/workout_note.html', person_id=person_id,
workout_id=workout_id,
note=note) }}
</div>
@@ -76,17 +76,17 @@
</thead>
<tbody class="divide-y divide-gray-100" id="new-workout" hx-target="closest tr"
hx-swap="outerHTML swap:0.5s">
{% for t in workout['TopSets'] %}
{{ render_partial('partials/topset.html', person_id=workout['PersonId'],
workout_id=workout['WorkoutId'],
topset_id=t['TopSetId'], exercise_id=t['ExerciseId'] ,exercise_name=t['ExerciseName'],
repetitions=t['Repetitions'],
weight=t['Weight']) }}
{% for topset in top_sets %}
{{ render_partial('partials/topset.html', person_id=person_id,
workout_id=workout_id,
topset_id=topset.topset_id, exercise_id=topset.exercise_id, exercise_name=topset.exercise_name,
repetitions=topset.repetitions,
weight=topset.weight) }}
{% endfor %}
</tbody>
</table>
{% if workout['TopSets']|length == 0 %}
{% if top_sets|length == 0 %}
<div class="bg-purple-100 rounded-lg py-5 px-6 mb-4 text-base text-purple-700 mb-3" role="alert"
id="no-workouts">
No topsets found.
@@ -95,12 +95,12 @@
</div>
<!-- Modal footer -->
<div class="flex items-center p-3 md:p-6 space-x-2 border-t border-gray-200 rounded-b dark:border-gray-600">
{{ render_partial('partials/new_set_form.html', person_id=workout['PersonId'],
workout_id=workout['WorkoutId'],
{{ render_partial('partials/new_set_form.html', person_id=person_id,
workout_id=workout_id,
exercises=exercises,
has_value=False) }}
</div>
<div id="exercise-progress-{{ workout['PersonId'] }}" class="mx-0 md:mx-5">
<div id="exercise-progress-{{ person_id }}" class="mx-0 md:mx-5">
</div>
</div>