Este PR se enfoca en diferentes aspectos relacionados al inicio de sesión del usuario en banner. En particular, se soluciona el problema expuesto en la issue #12.
Aportes principales:
- Por seguridad, cuando el usuario ingresa su contraseña esta ya no se muestra en pantalla.
- Se asegura de que, al momento de tomar ramos, haya ocurrido un inicio de sesión a lo más hace 10 minutos.
Aportes secundarios:
- Se adjunta un archivo
requirements.txt
para instalar todas las librerías necesarias con un solo comando.
- Se ignoran algunos archivos comunes de macOS.
Explicación solución a issue #12
El problema ocurría porque el programa solo iniciaba sesión previo a reservar la hora de toma de ramos. Sin embargo las sesiones de Banner solo son válidas por 15 minutos, por lo que si se realizada una reserva con más de 15 minutos de anticipación, al intentar tomar ramos saltaba un error porque la sesión ya no era válida.
Una posible solución habría sido iniciar sesión siempre al inicio de tomar_ramos
, pero tenía 2 inconvenientes:
- Retrasaría un poco el acto mismo de tomar ramos, lo cual puede ser crucial para algunes usuaries.
- Cuando se intentaba iniciar sesión con una sesión ya activa, el HTML no era exáctamente igual, por lo que saltaba un error.
Para solucionar el primer inconveniente establecí un segundo schedule que se ejecuta 5 minutos previo al original y se encarga de realizar un inicio de sesión. Esto solo ocurre en los casos en que la reserva se realiza con más de 10 minutos de anticipación¹. El código más importante relacionado con esta solución puede encontrarse al inicio de la función reservar
.
Para solucionar el segundo inconveniente, fue necesario notar que el único cambio en el HTML cuando la sesión ya estaba iniciada era que se agregaba un formulario adicional antes del formulario de inicio de sesión. Como la función verificar_sesion
siempre intentaba rellenar los campos del primer formulario disponible, se producía un error al apuntar al formulario equivocado. Por lo tanto, solo fue necesario que la función verificar_sesion
revise siempre el último formulario de la lista en showforms()
, el cual en todos los casos es el formulario correcto.
TL;DR: Con todo esto resuelto, esta PR permite repetir el inicio de sesión 5 minutos antes de la toma de ramos (en los casos donde sea necesario). Así, la toma de ramos sigue siendo instantánea y siempre redirigirá al menu de banner con la sesión ya iniciada.
¹ Las sesiones de banner duran 15 minutos, pero se prefirió renovar la sesión a los 10 minutos para dejar un margen de error ante posibles cambios.