fox more event logging

This commit is contained in:
2025-05-30 21:19:48 +02:00
parent f7853f96ed
commit 50f7e115d6
8 changed files with 63 additions and 0 deletions

Binary file not shown.

View File

@@ -236,6 +236,7 @@ class EventType(Enum):
CONVERSATION_DELETE = 'conversation_delete' CONVERSATION_DELETE = 'conversation_delete'
CONVERSATION_MEMBER_ADD = 'conversation_member_add' CONVERSATION_MEMBER_ADD = 'conversation_member_add'
CONVERSATION_MEMBER_REMOVE = 'conversation_member_remove' CONVERSATION_MEMBER_REMOVE = 'conversation_member_remove'
CONVERSATION_OPEN = 'conversation_open'
# Message events # Message events
MESSAGE_CREATE = 'message_create' MESSAGE_CREATE = 'message_create'

View File

@@ -114,6 +114,19 @@ def conversation(conversation_id):
flash('You do not have access to this conversation.', 'error') flash('You do not have access to this conversation.', 'error')
return redirect(url_for('conversations.conversations')) return redirect(url_for('conversations.conversations'))
# Log conversation open
log_event(
event_type='conversation_open',
details={
'conversation_id': conversation.id,
'conversation_name': conversation.name,
'user_id': current_user.id,
'user_name': f"{current_user.username} {current_user.last_name}",
'message_count': Message.query.filter_by(conversation_id=conversation_id).count()
}
)
db.session.commit()
# Query messages directly using the Message model # Query messages directly using the Message model
messages = Message.query.filter_by(conversation_id=conversation_id).order_by(Message.created_at.asc()).all() messages = Message.query.filter_by(conversation_id=conversation_id).order_by(Message.created_at.asc()).all()

View File

@@ -234,6 +234,7 @@ def upload_room_file(room_id):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return jsonify({'success': True, 'filename': filename, 'overwritten': True}) return jsonify({'success': True, 'filename': filename, 'overwritten': True})
else: else:
rf = RoomFile( rf = RoomFile(
@@ -260,6 +261,7 @@ def upload_room_file(room_id):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return jsonify({'success': True, 'filename': filename}) return jsonify({'success': True, 'filename': filename})
@room_files_bp.route('/<int:room_id>/files/<filename>', methods=['GET']) @room_files_bp.route('/<int:room_id>/files/<filename>', methods=['GET'])
@@ -299,6 +301,7 @@ def download_room_file(room_id, filename):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return send_from_directory(os.path.dirname(file_path), filename, as_attachment=True) return send_from_directory(os.path.dirname(file_path), filename, as_attachment=True)
@room_files_bp.route('/<int:room_id>/files/<path:filename>', methods=['DELETE']) @room_files_bp.route('/<int:room_id>/files/<path:filename>', methods=['DELETE'])
@@ -343,6 +346,7 @@ def delete_file(room_id, filename):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return jsonify({'success': True}) return jsonify({'success': True})
@@ -415,6 +419,18 @@ def create_room_folder(room_id):
) )
db.session.add(rf) db.session.add(rf)
db.session.commit() db.session.commit()
log_event(
event_type='folder_create',
details={
'created_by': f"{current_user.username} {current_user.last_name}",
'folder_name': folder_name,
'room_id': room_id,
'path': rel_path
},
user_id=current_user.id
)
db.session.commit()
return jsonify({'success': True, 'name': folder_name}) return jsonify({'success': True, 'name': folder_name})
@room_files_bp.route('/<int:room_id>/rename', methods=['POST']) @room_files_bp.route('/<int:room_id>/rename', methods=['POST'])
@@ -494,6 +510,7 @@ def rename_room_file(room_id):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return jsonify({'success': True, 'old_name': old_name, 'new_name': new_name}) return jsonify({'success': True, 'old_name': old_name, 'new_name': new_name})
@@ -633,6 +650,7 @@ def move_room_file(room_id):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return jsonify({'success': True}) return jsonify({'success': True})
@@ -701,9 +719,33 @@ def toggle_star(room_id):
if is_starred: if is_starred:
# Unstar the file # Unstar the file
rf.starred_by.remove(current_user) rf.starred_by.remove(current_user)
log_event(
event_type='file_unstar',
details={
'unstarred_by': f"{current_user.username} {current_user.last_name}",
'filename': filename,
'room_id': room_id,
'path': rel_path,
'type': rf.type,
'size': rf.size if rf.type == 'file' else None
},
user_id=current_user.id
)
else: else:
# Star the file # Star the file
rf.starred_by.append(current_user) rf.starred_by.append(current_user)
log_event(
event_type='file_star',
details={
'starred_by': f"{current_user.username} {current_user.last_name}",
'filename': filename,
'room_id': room_id,
'path': rel_path,
'type': rf.type,
'size': rf.size if rf.type == 'file' else None
},
user_id=current_user.id
)
db.session.commit() db.session.commit()
@@ -914,6 +956,7 @@ def restore_file(room_id):
}, },
user_id=current_user.id user_id=current_user.id
) )
db.session.commit()
return jsonify({'success': True}) return jsonify({'success': True})

View File

@@ -19,6 +19,7 @@
<option value="file_star">File Star</option> <option value="file_star">File Star</option>
<option value="file_unstar">File Unstar</option> <option value="file_unstar">File Unstar</option>
<option value="file_delete_permanent">File Delete Permanent</option> <option value="file_delete_permanent">File Delete Permanent</option>
<option value="folder_create">Folder Create</option>
<option value="room_create">Room Create</option> <option value="room_create">Room Create</option>
<option value="room_delete">Room Delete</option> <option value="room_delete">Room Delete</option>
<option value="room_update">Room Update</option> <option value="room_update">Room Update</option>
@@ -26,6 +27,7 @@
<option value="room_member_permissions_update">Room Member Permissions Update</option> <option value="room_member_permissions_update">Room Member Permissions Update</option>
<option value="conversation_create">Conversation Create</option> <option value="conversation_create">Conversation Create</option>
<option value="conversation_delete">Conversation Delete</option> <option value="conversation_delete">Conversation Delete</option>
<option value="conversation_open">Conversation Open</option>
<option value="message_sent">Message Sent</option> <option value="message_sent">Message Sent</option>
<option value="attachment_download">Attachment Download</option> <option value="attachment_download">Attachment Download</option>
</select> </select>
@@ -88,6 +90,8 @@
<span class="badge bg-secondary">File Unstar</span> <span class="badge bg-secondary">File Unstar</span>
{% elif event.event_type == 'file_delete_permanent' %} {% elif event.event_type == 'file_delete_permanent' %}
<span class="badge bg-danger">File Delete Permanent</span> <span class="badge bg-danger">File Delete Permanent</span>
{% elif event.event_type == 'folder_create' %}
<span class="badge bg-success">Folder Create</span>
{% elif event.event_type == 'room_create' %} {% elif event.event_type == 'room_create' %}
<span class="badge bg-success">Room Create</span> <span class="badge bg-success">Room Create</span>
{% elif event.event_type == 'room_delete' %} {% elif event.event_type == 'room_delete' %}
@@ -102,6 +106,8 @@
<span class="badge bg-success">Conversation Create</span> <span class="badge bg-success">Conversation Create</span>
{% elif event.event_type == 'conversation_delete' %} {% elif event.event_type == 'conversation_delete' %}
<span class="badge bg-danger">Conversation Delete</span> <span class="badge bg-danger">Conversation Delete</span>
{% elif event.event_type == 'conversation_open' %}
<span class="badge bg-info">Conversation Open</span>
{% elif event.event_type == 'message_sent' %} {% elif event.event_type == 'message_sent' %}
<span class="badge bg-primary">Message Sent</span> <span class="badge bg-primary">Message Sent</span>
{% elif event.event_type == 'attachment_download' %} {% elif event.event_type == 'attachment_download' %}