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)