def controlador_accion_Borrar(hermes, MensajeIntent, conf): if (not MensajeIntent.slots.Repeticion): sesion = MensajeIntent.session_id if (MensajeIntent.slots.Fecha): fecha = MensajeIntent.slots.Fecha.first().value fecha = fecha[:fecha.index('+') - 1] fechaObjeto = datetime.strptime(fecha, "%Y-%m-%d %H:%M:%S") med = MensajeIntent.slots.Medicamento.first().value mensaje = Snips.usuario + " está borrando el recordatorio para el día " + str( fechaObjeto.day) + " de " + str( fechaObjeto.month) + " del " + str( fechaObjeto.year) + " a las " + str( fechaObjeto.hour) + minutos( fechaObjeto.minute) + " tomar " + med e = Evento(med, fechaObjeto, Snips.usuario, False, '') if (Snips.ExisteEvento(e)): e.IncrementarVeces() print('Evento a borrar: tomar ' + str(e)) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') job = fecha + ',' + e.med + ',' + e.usuario if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento no repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) else: mensaje = 'Fecha errónea. Vuelve a introducir el comando' hermes.publish_end_session(MensajeIntent.session_id, mensaje) else: print('Borrando evento rep') sesion = MensajeIntent.session_id if (MensajeIntent.slots.Fecha): fecha = MensajeIntent.slots.Fecha.first().value fecha = fecha[:fecha.index('+') - 1] fechaObjeto = datetime.strptime(fecha, "%Y-%m-%d %H:%M:%S") else: fecha = datetime.today().replace( hour=0, minute=0, second=0, microsecond=0).strftime("%Y-%m-%d %H:%M") fechaObjeto = datetime.strptime(fecha, "%Y-%m-%d %H:%M") med = MensajeIntent.slots.Medicamento.first().value if (not MensajeIntent.slots.cantidad): veces = 1 else: veces = int(MensajeIntent.slots.cantidad.first().value) if (veces == 0): mensaje = 'No se puede borrar un evento repetitivo con cantidad igual a 0.' else: frecuencia = MensajeIntent.slots.Repeticion.first().value if (frecuencia == 'diariamente'): mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' todos los dias empezando ' + str( fecha) e = Evento(med, fechaObjeto, Snips.usuario, True, '1 dia') print(e) if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion diaria,' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'dia'): if (veces > 30): mensaje = "No se puede borrar un evento repetitivo con cant mayor a 30 días." else: mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' cada ' + str( veces) + ' dias empezando ' + str(fecha) e = Evento(med, fechaObjeto, Snips.usuario, True, str(veces) + ' dia') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion cada ' + str( veces ) + ' dias,' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'mes'): if (veces > 11): mensaje = "No se puede borrar un evento repetitivo con cant igual o mayor que 11 meses" else: mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' cada ' + str( veces) + ' meses empezando ' + str(fecha) e = Evento(med, fechaObjeto, Snips.usuario, True, str(veces) + ' mes') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion ' + str( veces ) + ' meses ,' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'semana'): if (veces > 30): mensaje = "No se puede borrar un evento repetitivo con cant mayor a 30 semanas." else: mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' cada ' + str( veces) + ' semanas empezando ' + str(fecha) e = Evento(med, fechaObjeto, Snips.usuario, True, str(veces) + ' semana') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion ' + str( veces ) + ' semanas,' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'hora'): if (veces > 23): mensaje = "No se puede borrar un evento repetitivo con cant sea 23 horas o más." else: mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' cada ' + str( veces) + ' horas empezando ' + str(fecha) e = Evento(med, fechaObjeto, Snips.usuario, True, str(veces) + ' hora') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion ' + str( veces ) + ' horas,' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'desayuno'): #HORA-1 mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' en el desayuno' e = Evento(med, fechaObjeto, Snips.usuario, True, 'desayuno') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion Desayuno' + ',' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'comida'): #HORA-1 mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' en la comida' e = Evento(med, fechaObjeto, Snips.usuario, True, 'comida') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion Comida' + ',' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'cena'): #HORA-1 mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' en la cena' e = Evento(med, fechaObjeto, Snips.usuario, True, 'cena') if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion Cena' + ',' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) else: mensaje = Snips.usuario + " está borrando un recordatorio para tomar " + med + ' cada ' + str( veces) + ' ' + frecuencia + ' empezando ' + str(fecha) e = Evento(med, fechaObjeto, Snips.usuario, True, str(veces) + ' ' + frecuencia) if (Snips.ExisteEvento(e)): e.IncrementarVeces() job = 'Repeticion semanal cada ' + frecuencia + ',' + med + ',' + Snips.usuario + ',' + str( fechaObjeto) Snips.borrarEvento(e) Snips.log(e, Snips.usuario, '', 'Borrar_Evento', '') if (existe_Trabajo(job)): Snips.planificador.remove_job(job) job = 'Evento repetitivo: recordando tomar ' + e.med + ' a ' + e.usuario + ' cada ' + e.cuando if (existe_Trabajo1(job)): Snips.planificador1.remove_job(job) else: mensaje = 'Evento a borrar no existe' Snips.log(None, '', '', 'Error', mensaje) hermes.publish_end_session(MensajeIntent.session_id, mensaje)
def controlador_accion_Anadir_Evento(hermes, MensajeIntent, conf): global Snips #print(str(MensajeIntent.slots.Repeticion)) if (not MensajeIntent.slots.Repeticion): session = MensajeIntent.session_id if (MensajeIntent.slots.Fecha): fecha = MensajeIntent.slots.Fecha.first().value fecha = fecha[:fecha.index('+') - 1] FechaObjeto = datetime.strptime(fecha, "%Y-%m-%d %H:%M:%S") if (datetime.now() < FechaObjeto): med = MensajeIntent.slots.Medicamento.first().value mensaje = Snips.usuario + " está añadiendo un recordatorio para el día " + str( FechaObjeto.day) + " de " + str( FechaObjeto.month) + " del " + str( FechaObjeto.year) + " a las " + str( FechaObjeto.hour) + minutos( FechaObjeto.minute) + " tomar " + med e = Evento(med, FechaObjeto, Snips.usuario, False, '') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') Snips.planificador.add_job( recordatorio, 'date', run_date=FechaObjeto, id=str(e.fecha) + ',' + e.med + ',' + e.usuario, args=['default', e, False, Snips]) else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) else: mensaje = 'La fecha introducida ya ha pasado. Vuelve a introducir el comando' else: mensaje = 'Fecha errónea. Vuelve a introducir el comando' else: session = MensajeIntent.session_id if (MensajeIntent.slots.Fecha): fecha = MensajeIntent.slots.Fecha.first().value fecha = fecha[:fecha.index('+') - 1] FechaObjeto = datetime.strptime(fecha, "%Y-%m-%d %H:%M:%S") else: fecha = datetime.today().replace( second=0, microsecond=0).strftime("%Y-%m-%d %H:%M") FechaObjeto = datetime.strptime(fecha, "%Y-%m-%d %H:%M") med = MensajeIntent.slots.Medicamento.first().value if (not MensajeIntent.slots.cantidad): veces = 1 else: veces = int(MensajeIntent.slots.cantidad.first().value) days = calendar.monthrange(datetime.now().year, datetime.now().month)[1] if (veces == 0): mensaje = 'No se puede crear un evento repetitivo con cantidad igual a 0.' else: frecuencia = MensajeIntent.slots.Repeticion.first().value if (frecuencia == 'diariamente'): mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' todos los dias empezando ' + str( fecha) e = Evento(med, FechaObjeto, Snips.usuario, True, '1 dia') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): FechaObjecto = datetime.now() + timedelta(days=1) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion diaria,' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=str(FechaObjeto.day) + '/1', hour=FechaObjeto.hour, minute=FechaObjeto.minute, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'dia'): if (veces > 30): mensaje = "No se puede crear un evento repetitivo con cant mayor a 30 días." else: mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' cada ' + str( veces) + ' dias empezando ' + str(fecha) e = Evento(med, FechaObjeto, Snips.usuario, True, str(veces) + ' dia') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): aux = veces FechaObjecto = datetime.now() + timedelta(days=aux) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion cada ' + str(veces) + ' dias,' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=str(FechaObjeto.day) + '/' + str(veces), hour=FechaObjeto.hour, minute=FechaObjeto.minute, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'mes'): if (veces > 11): mensaje = "No se puede crear un evento repetitivo con cant igual o mayor que 11 meses" else: mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' cada ' + str( veces) + ' meses empezando ' + str(fecha) e = Evento(med, FechaObjeto, Snips.usuario, True, str(veces) + ' mes') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): aux = veces * days FechaObjecto = datetime.now() + timedelta(days=aux) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion ' + str(veces) + ' meses ,' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=str(FechaObjeto.month) + '/' + str(veces), day=FechaObjeto.day, hour=FechaObjeto.hour, minute=FechaObjeto.minute, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'semana'): if (veces > 30): mensaje = "No se puede crear un evento repetitivo con cant mayor a 30 semanas." else: mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' cada ' + str( veces) + ' semanas empezando ' + str(fecha) e = Evento(med, FechaObjeto, Snips.usuario, True, str(veces) + ' semana') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): aux = 7 * veces FechaObjecto = datetime.now() + timedelta(days=aux) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion ' + str(veces) + ' semanas,' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=str(FechaObjeto.day) + '/' + str(7 * veces), hour=FechaObjeto.hour, minute=FechaObjeto.minute, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'hora'): if (veces > 23): mensaje = "No se puede crear un evento repetitivo con cant sea 23 o más." else: mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' cada ' + str( veces) + ' horas empezando ' + str(fecha) e = Evento(med, FechaObjeto, Snips.usuario, True, str(veces) + ' hora') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): FechaObjecto = e.fecha while ((FechaObjecto + timedelta(hours=veces)) < datetime.now() and (FechaObjecto.hour + veces) < 23): print(str(FechaObjecto)) FechaObjecto += timedelta(hours=veces) print(str(FechaObjecto)) horaSig = FechaObjecto.hour + veces print(str(FechaObjecto)) if (horaSig > 23): FechaObjecto += timedelta(hours=veces) print(str(FechaObjecto)) print(str(FechaObjecto)) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion ' + str(veces) + ' horas,' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=FechaObjeto.day, hour=str(FechaObjeto.hour) + '/' + str(veces), minute=FechaObjeto.minute, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'desayuno'): #HORA-1 mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' en el desayuno' e = Evento(med, FechaObjeto, Snips.usuario, True, 'desayuno') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): FechaObjecto = datetime.now() + timedelta(days=1) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion Desayuno' + ',' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=FechaObjeto.day, hour='8/1', minute=0, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'comida'): #HORA-1 mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' en la comida' e = Evento(med, FechaObjeto, Snips.usuario, True, 'comida') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): FechaObjecto = datetime.now() + timedelta(days=1) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion Comida' + ',' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=FechaObjeto.day, hour='13/1', minute=0, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) elif (frecuencia == 'cena'): #HORA-1 mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' en la cena' e = Evento(med, FechaObjeto, Snips.usuario, True, 'cena') if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): FechaObjecto = datetime.now() + timedelta(days=1) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion Cena' + ',' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), year=FechaObjeto.year, month=FechaObjeto.month, day=FechaObjeto.day, hour='21/1', minute=0, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) else: mensaje = Snips.usuario + " está añadiendo un recordatorio para tomar " + med + ' cada ' + str( veces) + ' ' + frecuencia + ' empezando ' + str(fecha) e = Evento(med, FechaObjeto, Snips.usuario, True, str(veces) + ' ' + frecuencia) if (not Snips.ExisteEvento(e)): e.IncrementarVeces() if (e.fecha < datetime.now()): FechaObjecto = datetime.now() + timedelta(days=7 * veces) Snips.planificador.add_job( recordatorio, 'cron', id='Repeticion semanal cada ' + frecuencia + ',' + med + ',' + Snips.usuario + ',' + str(FechaObjeto), day_of_week=Snips.dia_sem(frecuencia), year=FechaObjeto.year, month=FechaObjeto.month, day=FechaObjeto.day, hour=FechaObjeto.hour, minute=FechaObjeto.minute, replace_existing=True, args=['default', e, True, Snips]) Snips.anadirEvento(e) Snips.log(e, Snips.usuario, '', 'Añadir_Evento', '') else: mensaje = 'Evento a crear ya existe' Snips.log(None, '', '', 'Error', mensaje) print('planificador') Snips.planificador.print_jobs() print('planificador1') Snips.planificador1.print_jobs() hermes.publish_end_session(MensajeIntent.session_id, mensaje)