Refactor get workout call
This commit is contained in:
12
app.py
12
app.py
@@ -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_tags, workout_tags, selected_workout_tag_ids) = db.get_workout_tags(
|
||||||
person_id, workout_id)
|
person_id, workout_id)
|
||||||
exercises = db.get_all_exercises()
|
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'])
|
@ app.route("/person/<int:person_id>/workout", methods=['POST'])
|
||||||
@@ -153,7 +153,7 @@ def create_workout(person_id):
|
|||||||
person_id, new_workout_id)
|
person_id, new_workout_id)
|
||||||
exercises = db.get_all_exercises()
|
exercises = db.get_all_exercises()
|
||||||
return render_template('partials/workout_modal.html',
|
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'])
|
@ 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
|
@ validate_workout
|
||||||
def get_workout_start_date_edit_form(person_id, workout_id):
|
def get_workout_start_date_edit_form(person_id, workout_id):
|
||||||
workout = db.get_workout(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'])
|
@ 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
|
@ validate_workout
|
||||||
def get_workout_start_date(person_id, workout_id):
|
def get_workout_start_date(person_id, workout_id):
|
||||||
workout = db.get_workout(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'])
|
@ 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
|
@ validate_workout
|
||||||
def get_workout_note_edit_form(person_id, workout_id):
|
def get_workout_note_edit_form(person_id, workout_id):
|
||||||
workout = db.get_workout(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'])
|
@ 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
|
@ validate_workout
|
||||||
def get_workout_note(person_id, workout_id):
|
def get_workout_note(person_id, workout_id):
|
||||||
workout = db.get_workout(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'])
|
@ app.route("/person/<int:person_id>/workout/<int:workout_id>/tag/add", methods=['POST'])
|
||||||
|
|||||||
34
db.py
34
db.py
@@ -198,16 +198,16 @@ class DataBase():
|
|||||||
def get_workout(self, person_id, workout_id):
|
def get_workout(self, person_id, workout_id):
|
||||||
topsets = self.execute("""
|
topsets = self.execute("""
|
||||||
SELECT
|
SELECT
|
||||||
P.person_id AS "PersonId",
|
P.person_id,
|
||||||
P.name AS "PersonName",
|
P.name AS "person_name",
|
||||||
W.workout_id AS "WorkoutId",
|
W.workout_id,
|
||||||
W.start_date AS "StartDate",
|
W.start_date,
|
||||||
T.topset_id AS "TopSetId",
|
T.topset_id,
|
||||||
E.exercise_id AS "ExerciseId",
|
E.exercise_id,
|
||||||
E.name AS "ExerciseName",
|
E.name AS "exercise_name",
|
||||||
T.repetitions AS "Repetitions",
|
T.repetitions,
|
||||||
T.weight AS "Weight",
|
T.weight,
|
||||||
W.note AS "Note"
|
W.note
|
||||||
FROM Person P
|
FROM Person P
|
||||||
LEFT JOIN Workout W ON P.person_id=W.person_id
|
LEFT JOIN Workout W ON P.person_id=W.person_id
|
||||||
LEFT JOIN TopSet T ON W.workout_id=T.workout_id
|
LEFT JOIN TopSet T ON W.workout_id=T.workout_id
|
||||||
@@ -216,15 +216,13 @@ class DataBase():
|
|||||||
AND W.workout_id = %s
|
AND W.workout_id = %s
|
||||||
ORDER BY T.topset_id""", [person_id, workout_id])
|
ORDER BY T.topset_id""", [person_id, workout_id])
|
||||||
|
|
||||||
note = next((t['Note'] for t in topsets), '')
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'PersonId': person_id,
|
'person_id': person_id,
|
||||||
'PersonName': next((t['PersonName'] for t in topsets), 'Unknown'),
|
'person_name': topsets[0]['person_name'],
|
||||||
'WorkoutId': workout_id,
|
'workout_id': workout_id,
|
||||||
'StartDate': topsets[0]['StartDate'],
|
'start_date': topsets[0]['start_date'],
|
||||||
'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],
|
'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': note
|
'note': topsets[0]['note']
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_topset(self, topset_id):
|
def get_topset(self, topset_id):
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
<div class="flex flex-col w-full">
|
<div class="flex flex-col w-full">
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<div class="w-full">
|
<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'],
|
{{ render_partial('partials/workout_tags.html', person_id=person_id,
|
||||||
workout_id=workout['WorkoutId'],
|
workout_id=workout_id,
|
||||||
person_tags=person_tags, workout_tags=workout_tags,
|
person_tags=person_tags, workout_tags=workout_tags,
|
||||||
selected_workout_tag_ids=selected_workout_tag_ids) }}
|
selected_workout_tag_ids=selected_workout_tag_ids) }}
|
||||||
|
|
||||||
@@ -30,14 +30,14 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-2">
|
<div class="grid grid-cols-1 lg:grid-cols-2">
|
||||||
{{ render_partial('partials/start_date.html', person_id=workout['PersonId'],
|
{{ render_partial('partials/start_date.html', person_id=person_id,
|
||||||
workout_id=workout['WorkoutId'],
|
workout_id=workout_id,
|
||||||
start_date=workout['StartDate']) }}
|
start_date=start_date) }}
|
||||||
|
|
||||||
|
|
||||||
{{ render_partial('partials/workout_note.html', person_id=workout['PersonId'],
|
{{ render_partial('partials/workout_note.html', person_id=person_id,
|
||||||
workout_id=workout['WorkoutId'],
|
workout_id=workout_id,
|
||||||
note=workout['Note']) }}
|
note=note) }}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -76,17 +76,17 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody class="divide-y divide-gray-100" id="new-workout" hx-target="closest tr"
|
<tbody class="divide-y divide-gray-100" id="new-workout" hx-target="closest tr"
|
||||||
hx-swap="outerHTML swap:0.5s">
|
hx-swap="outerHTML swap:0.5s">
|
||||||
{% for t in workout['TopSets'] %}
|
{% for topset in top_sets %}
|
||||||
{{ render_partial('partials/topset.html', person_id=workout['PersonId'],
|
{{ render_partial('partials/topset.html', person_id=person_id,
|
||||||
workout_id=workout['WorkoutId'],
|
workout_id=workout_id,
|
||||||
topset_id=t['TopSetId'], exercise_id=t['ExerciseId'] ,exercise_name=t['ExerciseName'],
|
topset_id=topset.topset_id, exercise_id=topset.exercise_id, exercise_name=topset.exercise_name,
|
||||||
repetitions=t['Repetitions'],
|
repetitions=topset.repetitions,
|
||||||
weight=t['Weight']) }}
|
weight=topset.weight) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</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"
|
<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">
|
id="no-workouts">
|
||||||
No topsets found.
|
No topsets found.
|
||||||
@@ -95,12 +95,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- Modal footer -->
|
<!-- 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">
|
<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'],
|
{{ render_partial('partials/new_set_form.html', person_id=person_id,
|
||||||
workout_id=workout['WorkoutId'],
|
workout_id=workout_id,
|
||||||
exercises=exercises,
|
exercises=exercises,
|
||||||
has_value=False) }}
|
has_value=False) }}
|
||||||
</div>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user