fixing logs on multiple rooms

This commit is contained in:
2025-05-30 21:08:58 +02:00
parent a08345e676
commit f7853f96ed
8 changed files with 73 additions and 16 deletions

Binary file not shown.

View File

@@ -55,6 +55,7 @@ class Room(db.Model):
creator = db.relationship('User', backref='created_rooms', foreign_keys=[created_by])
members = db.relationship('User', secondary=room_members, backref=db.backref('rooms', lazy='dynamic'))
member_permissions = relationship('RoomMemberPermission', back_populates='room', cascade='all, delete-orphan')
files = db.relationship('RoomFile', back_populates='room', cascade='all, delete-orphan')
def __repr__(self):
return f'<Room {self.name}>'
@@ -91,7 +92,7 @@ class RoomFile(db.Model):
deleted_at = db.Column(db.DateTime) # New field for tracking when the file was deleted
uploader = db.relationship('User', backref='uploaded_files', foreign_keys=[uploaded_by])
deleter = db.relationship('User', backref='deleted_room_files', foreign_keys=[deleted_by])
room = db.relationship('Room', backref='files')
room = db.relationship('Room', back_populates='files')
starred_by = db.relationship('User', secondary='user_starred_file', backref='starred_files')
def __repr__(self):

View File

@@ -5,6 +5,8 @@ from forms import RoomForm
from routes.room_files import user_has_permission
from routes.auth import require_password_change
from utils import log_event
import os
import shutil
rooms_bp = Blueprint('rooms', __name__, url_prefix='/rooms')
@@ -64,6 +66,7 @@ def create_room():
},
user_id=current_user.id
)
db.session.commit()
flash('Room created successfully!', 'success')
return redirect(url_for('rooms.rooms'))
@@ -96,6 +99,7 @@ def room(room_id):
},
user_id=current_user.id
)
db.session.commit()
return render_template('rooms/room.html', room=room, can_download=can_download, can_upload=can_upload, can_delete=can_delete, can_rename=can_rename, can_move=can_move, can_share=can_share)
@@ -145,6 +149,19 @@ def add_member(room_id):
if user not in room.members:
room.members.append(user)
db.session.commit()
log_event(
event_type='room_member_add',
details={
'room_id': room_id,
'room_name': room.name,
'added_user': f"{user.username} {user.last_name}",
'added_by': f"{current_user.username} {current_user.last_name}"
},
user_id=current_user.id
)
db.session.commit()
flash(f'{user.username} has been added to the room.', 'success')
return redirect(url_for('rooms.room_members', room_id=room_id))
@@ -168,8 +185,22 @@ def remove_member(room_id, user_id):
if not perm:
flash('User is not a member of this room.', 'error')
else:
user = User.query.get(user_id)
db.session.delete(perm)
db.session.commit()
log_event(
event_type='room_member_remove',
details={
'room_id': room_id,
'room_name': room.name,
'removed_user': f"{user.username} {user.last_name}",
'removed_by': f"{current_user.username} {current_user.last_name}"
},
user_id=current_user.id
)
db.session.commit()
flash('User has been removed from the room.', 'success')
return redirect(url_for('rooms.room_members', room_id=room_id))
@@ -184,6 +215,13 @@ def update_member_permissions(room_id, user_id):
if not perm:
flash('Member not found.', 'error')
return redirect(url_for('rooms.room_members', room_id=room_id))
# Get the user object
user = User.query.get(user_id)
if not user:
flash('User not found.', 'error')
return redirect(url_for('rooms.room_members', room_id=room_id))
perm.can_view = bool(request.form.get('can_view'))
perm.can_download = bool(request.form.get('can_download'))
perm.can_upload = bool(request.form.get('can_upload'))
@@ -192,6 +230,28 @@ def update_member_permissions(room_id, user_id):
perm.can_move = bool(request.form.get('can_move'))
perm.can_share = bool(request.form.get('can_share'))
db.session.commit()
log_event(
event_type='room_permission_update',
details={
'room_id': room_id,
'room_name': room.name,
'user': f"{user.username} {user.last_name}",
'updated_by': f"{current_user.username} {current_user.last_name}",
'permissions': {
'can_view': perm.can_view,
'can_download': perm.can_download,
'can_upload': perm.can_upload,
'can_delete': perm.can_delete,
'can_rename': perm.can_rename,
'can_move': perm.can_move,
'can_share': perm.can_share
}
},
user_id=current_user.id
)
db.session.commit()
flash('Permissions updated.', 'success')
return redirect(url_for('rooms.room_members', room_id=room_id))
@@ -225,6 +285,7 @@ def edit_room(room_id):
},
user_id=current_user.id
)
db.session.commit()
flash('Room updated successfully!', 'success')
return redirect(url_for('rooms.rooms'))
@@ -249,6 +310,12 @@ def delete_room(room_id):
try:
print(f"Attempting to delete room {room_id} ({room_name})")
# Delete physical files
room_dir = os.path.join('/data/rooms', str(room_id))
if os.path.exists(room_dir):
shutil.rmtree(room_dir)
print(f"Deleted room directory: {room_dir}")
# Delete the room (cascade will handle the rest)
db.session.delete(room)
db.session.commit()
@@ -263,6 +330,7 @@ def delete_room(room_id):
},
user_id=current_user.id
)
db.session.commit()
flash(f'Room "{room_name}" has been deleted.', 'success')
except Exception as e:

View File

@@ -110,9 +110,9 @@
<p class="text-muted mb-0" id="deleteFileName{{ room.id }}">{{ room.name }}</p>
</div>
</div>
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>
This item will be moved to trash. You can restore it from the trash page within 30 days.
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle text-warning"></i>
This Room will be permanently deleted. This action cannot be undone. Are you sure you want to proceed?
</div>
</div>
<div class="modal-footer">

View File

@@ -23,10 +23,6 @@
<option value="room_delete">Room Delete</option>
<option value="room_update">Room Update</option>
<option value="room_open">Room Open</option>
<option value="room_list_view">Room List View</option>
<option value="room_search">Room Search</option>
<option value="room_join">Room Join</option>
<option value="room_leave">Room Leave</option>
<option value="room_member_permissions_update">Room Member Permissions Update</option>
<option value="conversation_create">Conversation Create</option>
<option value="conversation_delete">Conversation Delete</option>
@@ -100,14 +96,6 @@
<span class="badge bg-primary">Room Update</span>
{% elif event.event_type == 'room_open' %}
<span class="badge bg-info">Room Open</span>
{% elif event.event_type == 'room_list_view' %}
<span class="badge bg-secondary">Room List View</span>
{% elif event.event_type == 'room_search' %}
<span class="badge bg-info">Room Search</span>
{% elif event.event_type == 'room_join' %}
<span class="badge bg-info">Room Join</span>
{% elif event.event_type == 'room_leave' %}
<span class="badge bg-secondary">Room Leave</span>
{% elif event.event_type == 'room_member_permissions_update' %}
<span class="badge bg-primary">Room Member Permissions Update</span>
{% elif event.event_type == 'conversation_create' %}