def conectar(user_id): ''' Metodo de conexion, que ademas registra las conexiones activas. ''' print("Alguien se quiere conectar") #user_id = request.args.get('user_id', '') try: print("Alguien se quiere conectar {}".format(user_id)) usuario = Usuario.get_usuario_por_id(user_id) emit("conectar", { 'status': 'OK', 'usuario': usuario.nombre }, room=request.sid) clients[user_id] = request.sid mensajes_sin_enviar = Mensaje.get_mensajes(usuario.id_usuario) for msg in mensajes_sin_enviar: emit("act-mensajes", { "origen": Usuario.get_usuario_por_id(msg.id_origen).nombre, "mensaje": msg.mensaje, "id_lugar": msg.id_lugar }, room=request.sid) msg.registrar_envio() print('Client Connect {}'.format(usuario.nombre)) except Exception: emit("no_registrado", { 'codigo': 404, 'descripcion': 'ERROR: usuario no encontrado' }, room=request.sid) print("no_registrado")
def get_mensajes(): ''' Mensajeria por socketIO. Evento "getmensajes". Si el usuario que pide los mensajes no esta conectado el servidor da 500 error. ''' print("getMensajes") for key in list(clients.keys()): if clients[key] == request.sid: origen = key usuario_origen = Usuario.get_usuario_por_id(origen) mensajes = Mensaje.get_mensajes_usuario(usuario_origen.id_usuario) mensajes_dic = [] for msg in mensajes: mensajes_dic.append({ "origen": Usuario.get_usuario_por_id(msg.id_origen).nombre, "destino": Usuario.get_usuario_por_id(msg.id_destino).nombre, "mensaje": msg.mensaje, "tiempo": msg.tiempo, "id_lugar": msg.id_lugar }) emit("getmensajes", json.dumps(mensajes_dic), room=request.sid)
def get_lugares(usuario_nombre=None): ''' Retorna los lugares agregados por un usuario si usuario_nombre!=None regresa todos los lugares ''' print("getlugares") for key in list(clients.keys()): if clients[key] == request.sid: origen = key usuario = Usuario.get_usuario_por_id(origen) lugares = Lugar.get_lugares(usuario.nombre) emit("getlugares", json.dumps(lugares), room=request.sid)
def enviar_mensaje(destinatorio, texto_mensaje, id_lugar=None): ''' Mensajeria por socketIO. Evento "mensaje". ''' origen = None for key in list(clients.keys()): if clients[key] == request.sid: origen = key if origen == None: print("Error: Usuario Origen Desconectado") usuario_destino = Usuario.get_usuario(destinatorio) usuario_origen = Usuario.get_usuario_por_id(origen) mensaje = Mensaje(_id_origen=origen, _id_destino=usuario_destino.id_usuario, _mensaje=texto_mensaje, _tiempo=datetime.datetime.now().strftime("%m-%d %H:%M"), _id_lugar=id_lugar) try: socket_destino = clients[usuario_destino.id_usuario] for key in list(clients.keys()): if clients[key] == request.sid: origen = key emit("act-mensajes", { "origen": usuario_origen.nombre, "destino": usuario_destino.nombre, "mensaje": mensaje.mensaje, "tiempo": mensaje.tiempo, "id_lugar": mensaje.id_lugar }, room=socket_destino) mensaje.estado = "enviado" mensaje.guardar() except KeyError: mensaje.guardar()