fixing logs on multiple rooms
This commit is contained in:
Binary file not shown.
@@ -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):
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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:
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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' %}
|
||||
|
||||
Reference in New Issue
Block a user