File size: 3,219 Bytes
82bf6fc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
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) |