diff --git a/app.py b/app.py index 3106027..158fe19 100644 --- a/app.py +++ b/app.py @@ -23,6 +23,7 @@ from routes.export import export_bp # Import the new export blueprint from routes.tags import tags_bp # Import the new tags blueprint from routes.programs import programs_bp # Import the new programs blueprint from routes.exercises import exercises_bp # Import the new exercises blueprint +from routes.settings import settings_bp # Import the new settings blueprint from extensions import db from utils import convert_str_to_date from flask_htmx import HTMX @@ -73,6 +74,7 @@ app.register_blueprint(export_bp) # Register the export blueprint (prefix define app.register_blueprint(tags_bp) # Register the tags blueprint (prefix defined in blueprint file) app.register_blueprint(programs_bp) # Register the programs blueprint (prefix defined in blueprint file) app.register_blueprint(exercises_bp) # Register the exercises blueprint +app.register_blueprint(settings_bp) # Register the settings blueprint @app.after_request def response_minify(response): @@ -224,62 +226,7 @@ def get_person_name(person_id): -@ app.route("/settings") -@ login_required -def settings(): - if htmx: - return render_block(app.jinja_env, 'settings.html', 'content') - return render_template('settings.html') -@ app.route("/settings/tab/people") -@ login_required -def settings_people(): - people = db.get_people() - return render_template('partials/settings/people.html', people=people) - -@ app.route("/settings/tab/exercises") -@ login_required -def settings_exercises(): - exercises = db.get_all_exercises() - all_attributes = db.exercises.get_attributes_by_category() - categories_list = db.exercises.get_all_attribute_categories() - - # Format options for custom_select - formatted_options = {} - for cat, attrs in all_attributes.items(): - formatted_options[cat] = [{"id": a['attribute_id'], "attribute_id": a['attribute_id'], "name": a['name'], "category_id": a['category_id']} for a in attrs] - - return render_template('partials/settings/exercises.html', - exercises=exercises, - all_attributes=formatted_options, - categories_list=categories_list) - -@ app.route("/settings/tab/export") -@ login_required -def settings_export(): - return render_template('partials/settings/export.html') - -@ app.route("/settings/tab/activity") -@ login_required -def settings_activity(): - return render_template('partials/settings/activity.html') - - -@app.route("/settings/activity_logs") -@login_required -def settings_activity_logs(): - limit = 50 - offset = request.args.get('offset', 0, type=int) - logs = db.activityRequest.get_recent_logs(limit=limit, offset=offset) - - # Check if there are more logs to load - has_more = len(logs) == limit - - return render_template('partials/activity_logs.html', - logs=logs, - offset=offset, - limit=limit, - has_more=has_more) # Routes moved to routes/tags.py blueprint diff --git a/routes/settings.py b/routes/settings.py new file mode 100644 index 0000000..6fb5c08 --- /dev/null +++ b/routes/settings.py @@ -0,0 +1,64 @@ +from flask import Blueprint, render_template, request +from flask_login import login_required +from jinja2_fragments import render_block +from extensions import db +from flask import current_app + +settings_bp = Blueprint('settings', __name__) + +@settings_bp.route("/settings") +@login_required +def settings(): + # Detect HTMX via header since we don't have the global htmx object here + is_htmx = request.headers.get('HX-Request') == 'true' + if is_htmx: + return render_block(current_app.jinja_env, 'settings.html', 'content') + return render_template('settings.html') + +@settings_bp.route("/settings/tab/people") +@login_required +def settings_people(): + people = db.get_people() + return render_template('partials/settings/people.html', people=people) + +@settings_bp.route("/settings/tab/exercises") +@login_required +def settings_exercises(): + exercises = db.get_all_exercises() + all_attributes = db.exercises.get_attributes_by_category() + categories_list = db.exercises.get_all_attribute_categories() + + # Format options for custom_select + formatted_options = {} + for cat, attrs in all_attributes.items(): + formatted_options[cat] = [{"id": a['attribute_id'], "attribute_id": a['attribute_id'], "name": a['name'], "category_id": a['category_id']} for a in attrs] + + return render_template('partials/settings/exercises.html', + exercises=exercises, + all_attributes=formatted_options, + categories_list=categories_list) + +@settings_bp.route("/settings/tab/export") +@login_required +def settings_export(): + return render_template('partials/settings/export.html') + +@settings_bp.route("/settings/tab/activity") +@login_required +def settings_activity(): + return render_template('partials/settings/activity.html') + +@settings_bp.route("/settings/activity_logs") +@login_required +def settings_activity_logs(): + limit = 50 + offset = request.args.get('offset', 0, type=int) + logs = db.activityRequest.get_recent_logs(limit=limit, offset=offset) + + # Check if there are more logs to load + has_more = len(logs) == limit + + return render_template('partials/activity_logs.html', + logs=logs, + offset=offset, + has_more=has_more) diff --git a/templates/base.html b/templates/base.html index 23d9429..dde9336 100644 --- a/templates/base.html +++ b/templates/base.html @@ -192,8 +192,8 @@ Endpoints - - Load More... diff --git a/templates/partials/settings/activity.html b/templates/partials/settings/activity.html index 0a87ac1..34008af 100644 --- a/templates/partials/settings/activity.html +++ b/templates/partials/settings/activity.html @@ -3,7 +3,7 @@ Activity Logs Review recent actions and administrative changes. - + diff --git a/templates/settings.html b/templates/settings.html index 45bbb0d..a3f1cde 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -13,8 +13,8 @@ - - - - - +
Review recent actions and administrative changes.