AIdeaText commited on
Commit
8837a56
verified
1 Parent(s): a4e0551

Upload 9 files

Browse files
Files changed (1) hide show
  1. app.py +105 -103
app.py CHANGED
@@ -1,103 +1,105 @@
1
- ##app.py
2
- import gradio as gr
3
- import os
4
- import logging
5
- from modules.ui.landing_ui import create_landing_interface
6
- from modules.ui.login_ui import create_login_interface
7
- from modules.auth.auth import authenticate_user
8
- from modules.database.database_init import initialize_database_connections
9
- import spaces
10
- import torch
11
-
12
- zero = torch.Tensor([0]).cuda()
13
- print(zero.device) # <-- 'cpu' 馃
14
-
15
- @spaces.GPU
16
- def greet(n):
17
- print(zero.device) # <-- 'cuda:0' 馃
18
- return f"Hello {zero + n} Tensor"
19
-
20
-
21
- # Configuraci贸n b谩sica
22
- logging.basicConfig(level=logging.INFO)
23
- logger = logging.getLogger(__name__)
24
-
25
- # Verificar las variables de entorno necesarias
26
- COSMOS_ENDPOINT = os.getenv("COSMOS_ENDPOINT")
27
- COSMOS_KEY = os.getenv("COSMOS_KEY")
28
-
29
- if not COSMOS_ENDPOINT or not COSMOS_KEY:
30
- raise ValueError("Faltan las variables de entorno COSMOS_ENDPOINT y COSMOS_KEY.")
31
-
32
- # Inicializar las conexiones a la base de datos
33
- if not initialize_database_connections():
34
- raise ValueError("No se pudo inicializar la conexi贸n a la base de datos.")
35
-
36
- # Funci贸n principal de inicializaci贸n
37
- def app_main():
38
- """
39
- Inicializa la aplicaci贸n con Gradio.
40
- """
41
- logger.info("Iniciando AIdeaText")
42
-
43
- # Estado de la aplicaci贸n
44
- state = gr.State({
45
- "logged_in": False,
46
- "username": None,
47
- "role": None
48
- })
49
-
50
- with gr.Blocks(css="#container { max-width: 800px; margin: auto; }") as app_interface:
51
- gr.HTML("<div id='container'>")
52
-
53
- # Contenedores para cada vista
54
- landing_container = gr.Group(visible=True)
55
- login_container = gr.Group(visible=False)
56
- user_container = gr.Group(visible=False)
57
-
58
- # Funci贸n de navegaci贸n
59
- def switch_view(to_view, state_update=None):
60
- updates = {
61
- "landing": [True, False, False],
62
- "login": [False, True, False],
63
- "user": [False, False, True]
64
- }
65
- visibilities = updates[to_view]
66
- if state_update:
67
- state.update(state_update)
68
- return [gr.update(visible=v) for v in visibilities]
69
-
70
- # Funci贸n de login
71
- def handle_login(username, password, state):
72
- success, role = authenticate_user(username, password)
73
- if success:
74
- state.update({
75
- "logged_in": True,
76
- "username": username,
77
- "role": role
78
- })
79
- return switch_view("user", state) + [f"Bienvenido, {username}"]
80
- return switch_view("login") + ["Credenciales incorrectas"]
81
-
82
- # Renderizar interfaces
83
- with landing_container:
84
- landing_interface = create_landing_interface()
85
- landing_interface.render(lambda: switch_view("login"))
86
-
87
- with login_container:
88
- login_interface = create_login_interface()
89
- login_interface.render(
90
- lambda: switch_view("landing"),
91
- handle_login
92
- )
93
-
94
- with user_container:
95
- user_interface = create_user_interface()
96
- user_interface.render(lambda: switch_view("landing"))
97
-
98
- gr.HTML("</div>")
99
-
100
- app_interface.launch(server_name="0.0.0.0", server_port=7860)
101
-
102
- if __name__ == "__main__":
103
- app_main()
 
 
 
1
+ import gradio as gr
2
+ import os
3
+ import logging
4
+
5
+ from modules.auth.auth import (
6
+ # Autenticaci贸n
7
+ authenticate_user,
8
+ authenticate_student,
9
+ authenticate_admin,
10
+ # Manejo de contrase帽as
11
+ hash_password,
12
+ verify_password,
13
+ # Manejo de usuarios
14
+ register_student,
15
+ update_student_info,
16
+ delete_student,
17
+ # Interfaz de Gradio
18
+ create_auth_interface,
19
+ create_user_page
20
+ )
21
+
22
+ from modules.database.database_init import initialize_database_connections
23
+ import spaces
24
+ import torch
25
+
26
+ zero = torch.Tensor([0]).cuda()
27
+ print(zero.device) # <-- 'cpu' 馃
28
+
29
+ @spaces.GPU
30
+ def greet(n):
31
+ print(zero.device) # <-- 'cuda:0' 馃
32
+ return f"Hello {zero + n} Tensor"
33
+
34
+ # Configuraci贸n b谩sica
35
+ logging.basicConfig(level=logging.INFO)
36
+ logger = logging.getLogger(__name__)
37
+
38
+ # Verificar variables de entorno
39
+ COSMOS_ENDPOINT = os.getenv("COSMOS_ENDPOINT")
40
+ COSMOS_KEY = os.getenv("COSMOS_KEY")
41
+ if not COSMOS_ENDPOINT or not COSMOS_KEY:
42
+ raise ValueError("Faltan variables de entorno: COSMOS_ENDPOINT y COSMOS_KEY.")
43
+
44
+ # Inicializar la conexi贸n a la base de datos
45
+ if not initialize_database_connections():
46
+ raise ValueError("No se pudo inicializar la conexi贸n a la base de datos.")
47
+
48
+ # Crear la interfaz de login
49
+ # app = create_auth_interface()
50
+
51
+ # Crear la interfaz de usuario y login
52
+ def main_interface():
53
+ """
54
+ Crea la interfaz principal con redirecci贸n al login o user page.
55
+ """
56
+ with gr.Blocks() as app_interface:
57
+ # Contenedores para manejo de redirecci贸n
58
+ login_container = gr.Group(visible=True)
59
+ user_container = gr.Group(visible=False)
60
+
61
+ # Crear login_page y user_page
62
+ login_page = create_auth_interface()
63
+ user_page = create_user_page()
64
+
65
+ # Manejo de login exitoso
66
+ def handle_login_redirect(username=None, role=None):
67
+ """
68
+ Redirige entre la p谩gina de login y la p谩gina de usuario.
69
+ Args:
70
+ username (str): Nombre de usuario.
71
+ role (str): Rol del usuario.
72
+ Returns:
73
+ dict: Actualizaci贸n de visibilidad de los contenedores.
74
+ """
75
+ if username and role:
76
+ return {
77
+ login_container: gr.update(visible=False),
78
+ user_container: gr.update(visible=True)
79
+ }
80
+ return {
81
+ login_container: gr.update(visible=True),
82
+ user_container: gr.update(visible=False)
83
+ }
84
+
85
+ # Contenedor de Login
86
+ with login_container:
87
+ login_page.render() # Renderiza la p谩gina de login
88
+
89
+ # Contenedor de Usuario
90
+ with user_container:
91
+ user_page.render() # Renderiza la p谩gina de usuario
92
+
93
+ # Conectar el manejo del login al evento `load`
94
+ login_page.load(
95
+ fn=handle_login_redirect,
96
+ inputs=[],
97
+ outputs=[login_container, user_container]
98
+ )
99
+
100
+ return app_interface
101
+
102
+ # Lanzar la aplicaci贸n
103
+ if __name__ == "__main__":
104
+ app = main_interface()
105
+ app.launch(server_name="0.0.0.0", server_port=7860, auth=None)