room notifications
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -69,8 +69,7 @@ def add_room_member(room_id):
|
|||||||
permission.can_move = permissions.get('can_move', False)
|
permission.can_move = permissions.get('can_move', False)
|
||||||
permission.can_share = permissions.get('can_share', False)
|
permission.can_share = permissions.get('can_share', False)
|
||||||
|
|
||||||
db.session.commit()
|
try:
|
||||||
|
|
||||||
# Create notification for the invited user
|
# Create notification for the invited user
|
||||||
create_notification(
|
create_notification(
|
||||||
notif_type='room_invite',
|
notif_type='room_invite',
|
||||||
@@ -98,7 +97,11 @@ def add_room_member(room_id):
|
|||||||
user_id=current_user.id
|
user_id=current_user.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
return jsonify({'success': True})
|
return jsonify({'success': True})
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
return jsonify({'error': str(e)}), 500
|
||||||
|
|
||||||
@room_members_bp.route('/<int:room_id>/members/<int:user_id>', methods=['DELETE'])
|
@room_members_bp.route('/<int:room_id>/members/<int:user_id>', methods=['DELETE'])
|
||||||
@login_required
|
@login_required
|
||||||
@@ -118,8 +121,7 @@ def remove_room_member(room_id, user_id):
|
|||||||
if permission:
|
if permission:
|
||||||
db.session.delete(permission)
|
db.session.delete(permission)
|
||||||
|
|
||||||
db.session.commit()
|
try:
|
||||||
|
|
||||||
# Create notification for the removed user
|
# Create notification for the removed user
|
||||||
create_notification(
|
create_notification(
|
||||||
notif_type='room_invite_removed',
|
notif_type='room_invite_removed',
|
||||||
@@ -146,7 +148,11 @@ def remove_room_member(room_id, user_id):
|
|||||||
user_id=current_user.id
|
user_id=current_user.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
return jsonify({'success': True})
|
return jsonify({'success': True})
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
return jsonify({'error': str(e)}), 500
|
||||||
|
|
||||||
@room_members_bp.route('/<int:room_id>/members/<int:user_id>/permissions', methods=['PUT'])
|
@room_members_bp.route('/<int:room_id>/members/<int:user_id>/permissions', methods=['PUT'])
|
||||||
@login_required
|
@login_required
|
||||||
@@ -194,4 +200,6 @@ def update_member_permissions(room_id, user_id):
|
|||||||
user_id=current_user.id
|
user_id=current_user.id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
return jsonify({'success': True})
|
return jsonify({'success': True})
|
||||||
@@ -4,9 +4,10 @@ from models import db, Room, User, RoomMemberPermission, RoomFile
|
|||||||
from forms import RoomForm
|
from forms import RoomForm
|
||||||
from routes.room_files import user_has_permission
|
from routes.room_files import user_has_permission
|
||||||
from routes.auth import require_password_change
|
from routes.auth import require_password_change
|
||||||
from utils import log_event
|
from utils import log_event, create_notification
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
rooms_bp = Blueprint('rooms', __name__, url_prefix='/rooms')
|
rooms_bp = Blueprint('rooms', __name__, url_prefix='/rooms')
|
||||||
|
|
||||||
@@ -148,7 +149,30 @@ def add_member(room_id):
|
|||||||
# Ensure user is added to the room.members relationship
|
# Ensure user is added to the room.members relationship
|
||||||
if user not in room.members:
|
if user not in room.members:
|
||||||
room.members.append(user)
|
room.members.append(user)
|
||||||
db.session.commit()
|
|
||||||
|
try:
|
||||||
|
# Create notification for the invited user
|
||||||
|
create_notification(
|
||||||
|
notif_type='room_invite',
|
||||||
|
user_id=user.id,
|
||||||
|
sender_id=current_user.id,
|
||||||
|
details={
|
||||||
|
'message': f'You have been invited to join room "{room.name}"',
|
||||||
|
'room_id': room_id,
|
||||||
|
'room_name': room.name,
|
||||||
|
'invited_by': f"{current_user.username} {current_user.last_name}",
|
||||||
|
'permissions': {
|
||||||
|
'can_view': True,
|
||||||
|
'can_download': False,
|
||||||
|
'can_upload': False,
|
||||||
|
'can_delete': False,
|
||||||
|
'can_rename': False,
|
||||||
|
'can_move': False,
|
||||||
|
'can_share': False
|
||||||
|
},
|
||||||
|
'timestamp': datetime.utcnow().isoformat()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
log_event(
|
log_event(
|
||||||
event_type='room_member_add',
|
event_type='room_member_add',
|
||||||
@@ -160,9 +184,14 @@ def add_member(room_id):
|
|||||||
},
|
},
|
||||||
user_id=current_user.id
|
user_id=current_user.id
|
||||||
)
|
)
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
flash(f'{user.username} has been added to the room.', 'success')
|
flash(f'{user.username} has been added to the room.', 'success')
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
flash('An error occurred while adding the member.', 'error')
|
||||||
|
print(f"Error adding member: {str(e)}")
|
||||||
|
|
||||||
return redirect(url_for('rooms.room_members', room_id=room_id))
|
return redirect(url_for('rooms.room_members', room_id=room_id))
|
||||||
|
|
||||||
@rooms_bp.route('/<int:room_id>/members/<int:user_id>/remove', methods=['POST'])
|
@rooms_bp.route('/<int:room_id>/members/<int:user_id>/remove', methods=['POST'])
|
||||||
@@ -186,8 +215,20 @@ def remove_member(room_id, user_id):
|
|||||||
flash('User is not a member of this room.', 'error')
|
flash('User is not a member of this room.', 'error')
|
||||||
else:
|
else:
|
||||||
user = User.query.get(user_id)
|
user = User.query.get(user_id)
|
||||||
db.session.delete(perm)
|
try:
|
||||||
db.session.commit()
|
# Create notification for the removed user
|
||||||
|
create_notification(
|
||||||
|
notif_type='room_invite_removed',
|
||||||
|
user_id=user_id,
|
||||||
|
sender_id=current_user.id,
|
||||||
|
details={
|
||||||
|
'message': f'You have been removed from room "{room.name}"',
|
||||||
|
'room_id': room_id,
|
||||||
|
'room_name': room.name,
|
||||||
|
'removed_by': f"{current_user.username} {current_user.last_name}",
|
||||||
|
'timestamp': datetime.utcnow().isoformat()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
log_event(
|
log_event(
|
||||||
event_type='room_member_remove',
|
event_type='room_member_remove',
|
||||||
@@ -199,9 +240,15 @@ def remove_member(room_id, user_id):
|
|||||||
},
|
},
|
||||||
user_id=current_user.id
|
user_id=current_user.id
|
||||||
)
|
)
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
|
db.session.delete(perm)
|
||||||
|
db.session.commit()
|
||||||
flash('User has been removed from the room.', 'success')
|
flash('User has been removed from the room.', 'success')
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
flash('An error occurred while removing the member.', 'error')
|
||||||
|
print(f"Error removing member: {str(e)}")
|
||||||
|
|
||||||
return redirect(url_for('rooms.room_members', room_id=room_id))
|
return redirect(url_for('rooms.room_members', room_id=room_id))
|
||||||
|
|
||||||
@rooms_bp.route('/<int:room_id>/members/<int:user_id>/permissions', methods=['POST'])
|
@rooms_bp.route('/<int:room_id>/members/<int:user_id>/permissions', methods=['POST'])
|
||||||
|
|||||||
Reference in New Issue
Block a user