Add activity logs table

This commit is contained in:
Peter Stockings
2026-01-31 14:47:59 +11:00
parent 62080b97a4
commit d7c9f71d22
10 changed files with 193 additions and 6 deletions

26
app.py
View File

@@ -160,6 +160,7 @@ def person_overview(person_id):
def create_person():
name = request.form.get("name")
new_person_id = db.create_person(name)
db.activityRequest.log(current_user.id, 'CREATE_PERSON', 'person', new_person_id, f"Created person: {name}")
return render_template('partials/person.html', person_id=new_person_id, name=name), 200, {"HX-Trigger": "updatedPeople"}
@@ -168,7 +169,9 @@ def create_person():
@admin_required
@validate_person
def delete_person(person_id):
name = db.get_person_name(person_id)
db.delete_person(person_id)
db.activityRequest.log(current_user.id, 'DELETE_PERSON', 'person', person_id, f"Deleted person: {name}")
return "", 200, {"HX-Trigger": "updatedPeople"}
@@ -187,7 +190,9 @@ def get_person_edit_form(person_id):
@require_ownership
def update_person_name(person_id):
new_name = request.form.get("name")
old_name = db.get_person_name(person_id)
db.update_person_name(person_id, new_name)
db.activityRequest.log(current_user.id, 'UPDATE_PERSON_NAME', 'person', person_id, f"Updated name for {old_name} to {new_name}")
return render_template('partials/person.html', person_id=person_id, name=new_name), 200, {"HX-Trigger": "updatedPeople"}
@@ -203,6 +208,7 @@ def create_exercise():
name = request.form.get("name")
attribute_ids = request.form.getlist('attribute_ids')
exercise = db.create_exercise(name, attribute_ids)
db.activityRequest.log(current_user.id, 'CREATE_EXERCISE', 'exercise', exercise['exercise_id'], f"Created exercise: {name}")
return render_template('partials/exercise.html',
exercise_id=exercise['exercise_id'],
name=exercise['name'],
@@ -250,6 +256,7 @@ def update_exercise(exercise_id):
new_name = request.form.get('name')
attribute_ids = request.form.getlist('attribute_ids')
exercise = db.update_exercise(exercise_id, new_name, attribute_ids)
db.activityRequest.log(current_user.id, 'UPDATE_EXERCISE', 'exercise', exercise_id, f"Updated exercise: {new_name}")
return render_template('partials/exercise.html',
exercise_id=exercise_id,
name=exercise['name'],
@@ -280,6 +287,23 @@ def settings():
return render_template('settings.html', people=people, exercises=exercises, all_attributes=formatted_options)
@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
@ app.route("/person/<int:person_id>/exercise/<int:exercise_id>/sparkline", methods=['GET'])
@@ -352,7 +376,9 @@ def add_exercise():
@login_required
@admin_required
def delete_exercise(exercise_id):
exercise = db.get_exercise(exercise_id)
db.exercises.delete_exercise(exercise_id)
db.activityRequest.log(current_user.id, 'DELETE_EXERCISE', 'exercise', exercise_id, f"Deleted exercise: {exercise['name']}")
return ""
@app.teardown_appcontext