#app.py import gradio as gr import os import logging from modules.auth.auth import ( # Autenticaci贸n authenticate_user, authenticate_student, authenticate_admin, # Manejo de contrase帽as hash_password, verify_password, # Manejo de usuarios register_student, update_student_info, delete_student, # Interfaz de Gradio create_auth_interface, create_user_page ) from modules.database.database_init import initialize_database_connections import spaces import torch zero = torch.Tensor([0]).cuda() print(zero.device) # <-- 'cpu' 馃 @spaces.GPU def greet(n): print(zero.device) # <-- 'cuda:0' 馃 return f"Hello {zero + n} Tensor" # Configuraci贸n b谩sica logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Verificar variables de entorno COSMOS_ENDPOINT = os.getenv("COSMOS_ENDPOINT") COSMOS_KEY = os.getenv("COSMOS_KEY") if not COSMOS_ENDPOINT or not COSMOS_KEY: raise ValueError("Faltan variables de entorno: COSMOS_ENDPOINT y COSMOS_KEY.") # Inicializar la conexi贸n a la base de datos if not initialize_database_connections(): raise ValueError("No se pudo inicializar la conexi贸n a la base de datos.") # Crear la interfaz de login # app = create_auth_interface() # Crear la interfaz de usuario y login def main_interface(): """ Crea la interfaz principal con redirecci贸n al login o user page. """ with gr.Blocks() as app_interface: # Contenedores para manejo de redirecci贸n login_container = gr.Group(visible=True) user_container = gr.Group(visible=False) # Crear login_page y user_page login_page = create_auth_interface() user_page = create_user_page() # Manejo de login exitoso def handle_login_redirect(username=None, role=None): """ Redirige entre la p谩gina de login y la p谩gina de usuario. Args: username (str): Nombre de usuario. role (str): Rol del usuario. Returns: dict: Actualizaci贸n de visibilidad de los contenedores. """ if username and role: return { login_container: gr.update(visible=False), user_container: gr.update(visible=True) } return { login_container: gr.update(visible=True), user_container: gr.update(visible=False) } # Contenedor de Login with login_container: login_page.render() # Renderiza la p谩gina de login # Contenedor de Usuario with user_container: user_page.render() # Renderiza la p谩gina de usuario # Conectar el manejo del login al evento `load` login_page.load( fn=handle_login_redirect, inputs=[], outputs=[login_container, user_container] ) return app_interface # Lanzar la aplicaci贸n if __name__ == "__main__": app = main_interface() app.launch(server_name="0.0.0.0", server_port=7860, auth=None)