File size: 3,350 Bytes
2d9dd02
4adc748
 
 
71d6e37
 
 
4adc748
79c4b18
 
 
 
 
 
 
 
 
 
 
4adc748
 
 
 
 
71d6e37
4adc748
 
71d6e37
4adc748
71d6e37
4adc748
71d6e37
4adc748
 
 
71d6e37
 
4adc748
71d6e37
4adc748
71d6e37
08aea0d
 
 
 
 
 
 
 
 
 
 
 
71d6e37
 
08aea0d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71d6e37
08aea0d
 
 
71d6e37
08aea0d
 
 
 
 
 
 
 
 
 
 
 
 
4adc748
 
71d6e37
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
##app.py 
import gradio as gr
import os
import logging
from modules.ui.landing_ui import create_landing_interface
from modules.ui.login_ui import create_login_interface
from modules.auth.auth import authenticate_user
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 las variables de entorno necesarias
COSMOS_ENDPOINT = os.getenv("COSMOS_ENDPOINT")
COSMOS_KEY = os.getenv("COSMOS_KEY")

if not COSMOS_ENDPOINT or not COSMOS_KEY:
    raise ValueError("Faltan las variables de entorno COSMOS_ENDPOINT y COSMOS_KEY.")

# Inicializar las conexiones a la base de datos
if not initialize_database_connections():
    raise ValueError("No se pudo inicializar la conexi贸n a la base de datos.")

# Funci贸n principal de inicializaci贸n
def app_main():
    """
    Inicializa la aplicaci贸n con Gradio.
    """
    logger.info("Iniciando AIdeaText")
    
    # Estado de la aplicaci贸n
    state = gr.State({
        "logged_in": False,
        "username": None,
        "role": None
    })
    
    with gr.Blocks(css="#container { max-width: 800px; margin: auto; }") as app_interface:
        gr.HTML("<div id='container'>")
        
        # Contenedores para cada vista
        landing_container = gr.Group(visible=True)
        login_container = gr.Group(visible=False)
        user_container = gr.Group(visible=False)
        
        # Funci贸n de navegaci贸n
        def switch_view(to_view, state_update=None):
            updates = {
                "landing": [True, False, False],
                "login": [False, True, False],
                "user": [False, False, True]
            }
            visibilities = updates[to_view]
            if state_update:
                state.update(state_update)
            return [gr.update(visible=v) for v in visibilities]
        
        # Funci贸n de login
        def handle_login(username, password, state):
            success, role = authenticate_user(username, password)
            if success:
                state.update({
                    "logged_in": True,
                    "username": username,
                    "role": role
                })
                return switch_view("user", state) + [f"Bienvenido, {username}"]
            return switch_view("login") + ["Credenciales incorrectas"]
        
        # Renderizar interfaces
        with landing_container:
            landing_interface = create_landing_interface()
            landing_interface.render(lambda: switch_view("login"))
            
        with login_container:
            login_interface = create_login_interface()
            login_interface.render(
                lambda: switch_view("landing"),
                handle_login
            )
            
        with user_container:
            user_interface = create_user_interface()
            user_interface.render(lambda: switch_view("landing"))
            
        gr.HTML("</div>")
    
    app_interface.launch(server_name="0.0.0.0", server_port=7860)

if __name__ == "__main__":
    app_main()