feat: assign tags to exercises and show muscle distribution of workout
This commit is contained in:
60
app.py
60
app.py
@@ -1,7 +1,7 @@
|
||||
from datetime import date
|
||||
import os
|
||||
from flask import Flask, abort, render_template, redirect, request, url_for
|
||||
from flask_login import LoginManager, login_required
|
||||
from flask_login import LoginManager, login_required, current_user
|
||||
import jinja_partials
|
||||
from jinja2_fragments import render_block
|
||||
from decorators import (validate_person, validate_topset, validate_workout,
|
||||
@@ -200,27 +200,57 @@ def get_person_name(person_id):
|
||||
@ app.route("/exercise", methods=['POST'])
|
||||
def create_exercise():
|
||||
name = request.form.get("name")
|
||||
new_exercise_id = db.create_exercise(name)
|
||||
return render_template('partials/exercise.html', exercise_id=new_exercise_id, name=name)
|
||||
attribute_ids = request.form.getlist('attribute_ids')
|
||||
exercise = db.create_exercise(name, attribute_ids)
|
||||
return render_template('partials/exercise.html',
|
||||
exercise_id=exercise['exercise_id'],
|
||||
name=exercise['name'],
|
||||
attributes=exercise['attributes'])
|
||||
|
||||
|
||||
@ app.route("/exercise/<int:exercise_id>", methods=['GET'])
|
||||
def get_exercise(exercise_id):
|
||||
exercise = db.get_exercise(exercise_id)
|
||||
return render_template('partials/exercise.html', exercise_id=exercise_id, name=exercise.name)
|
||||
return render_template('partials/exercise.html',
|
||||
exercise_id=exercise_id,
|
||||
name=exercise['name'],
|
||||
attributes=exercise['attributes'])
|
||||
|
||||
|
||||
@ app.route("/exercise/<int:exercise_id>/edit_form", methods=['GET'])
|
||||
def get_exercise_edit_form(exercise_id):
|
||||
exercise = db.get_exercise(exercise_id)
|
||||
return render_template('partials/exercise.html', exercise_id=exercise_id, name=exercise['name'], is_edit=True)
|
||||
all_attributes = db.exercises.get_attributes_by_category()
|
||||
|
||||
# Format options for custom_select
|
||||
formatted_options = {}
|
||||
ex_attr_ids = [a['attribute_id'] for a in exercise['attributes']]
|
||||
for cat, attrs in all_attributes.items():
|
||||
formatted_options[cat] = [
|
||||
{
|
||||
"id": a['attribute_id'],
|
||||
"name": a['name'],
|
||||
"selected": a['attribute_id'] in ex_attr_ids
|
||||
} for a in attrs
|
||||
]
|
||||
|
||||
return render_template('partials/exercise.html',
|
||||
exercise_id=exercise_id,
|
||||
name=exercise['name'],
|
||||
attributes=exercise['attributes'],
|
||||
all_attributes=formatted_options,
|
||||
is_edit=True)
|
||||
|
||||
|
||||
@ app.route("/exercise/<int:exercise_id>/update", methods=['PUT'])
|
||||
def update_exercise(exercise_id):
|
||||
new_name = request.form.get('name')
|
||||
db.update_exercise(exercise_id, new_name)
|
||||
return render_template('partials/exercise.html', exercise_id=exercise_id, name=new_name)
|
||||
attribute_ids = request.form.getlist('attribute_ids')
|
||||
exercise = db.update_exercise(exercise_id, new_name, attribute_ids)
|
||||
return render_template('partials/exercise.html',
|
||||
exercise_id=exercise_id,
|
||||
name=exercise['name'],
|
||||
attributes=exercise['attributes'])
|
||||
|
||||
|
||||
""" @ app.route("/exercise/<int:exercise_id>/delete", methods=['DELETE'])
|
||||
@@ -230,12 +260,24 @@ def delete_exercise(exercise_id):
|
||||
|
||||
|
||||
@ app.route("/settings")
|
||||
@ login_required
|
||||
def settings():
|
||||
# check if user is admin
|
||||
if current_user.id != 1007:
|
||||
return redirect(url_for('dashboard'))
|
||||
people = db.get_people()
|
||||
exercises = db.get_all_exercises()
|
||||
all_attributes = db.exercises.get_attributes_by_category()
|
||||
|
||||
# Format options for custom_select
|
||||
formatted_options = {}
|
||||
for cat, attrs in all_attributes.items():
|
||||
formatted_options[cat] = [{"id": a['attribute_id'], "name": a['name']} for a in attrs]
|
||||
|
||||
if htmx:
|
||||
return render_block(app.jinja_env, "settings.html", "content", people=people, exercises=exercises), 200, {"HX-Trigger": "updatedPeople"}
|
||||
return render_template('settings.html', people=people, exercises=exercises)
|
||||
return render_block(app.jinja_env, "settings.html", "content",
|
||||
people=people, exercises=exercises, all_attributes=formatted_options), 200, {"HX-Trigger": "updatedPeople"}
|
||||
return render_template('settings.html', people=people, exercises=exercises, all_attributes=formatted_options)
|
||||
|
||||
|
||||
# Routes moved to routes/tags.py blueprint
|
||||
|
||||
Reference in New Issue
Block a user