40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from flask_jwt_extended import get_jwt_identity, jwt_required
|
|
from flask_socketio import emit, join_room
|
|
|
|
from infra.server import socketio
|
|
from repos.reservation_repo import ReservationRepository
|
|
|
|
@socketio.on('connect')
|
|
#@jwt_required()
|
|
def handle_connect():
|
|
#current_user = get_jwt_identity()
|
|
#print(f'Client connected: {current_user}')
|
|
emit('status', {'message': 'Connected'})
|
|
|
|
@socketio.on('disconnect')
|
|
def handle_disconnect():
|
|
print('Client disconnected')
|
|
|
|
@socketio.on('subscribe_reservations')
|
|
def handle_subscribe(data):
|
|
date = data.get('date')
|
|
room_id = data.get('room_id')
|
|
|
|
if room_id:
|
|
room = f"{date}_{room_id}"
|
|
filters = {'date': date, 'room_id': room_id}
|
|
else:
|
|
room = date
|
|
filters = {'date': date}
|
|
|
|
join_room(room)
|
|
reservations = ReservationRepository.list_all(filters)
|
|
emit('reservations_update', reservations)
|
|
|
|
def notify_clients(date, room_id=None):
|
|
all_reservations = ReservationRepository.list_all({'date': date})
|
|
socketio.emit('reservations_update', all_reservations, room=date)
|
|
|
|
if room_id:
|
|
room_reservations = [r for r in all_reservations if r.room_id == room_id]
|
|
socketio.emit('reservations_update', room_reservations, room=f"{date}_{room_id}") |