AIdeaText commited on
Commit
6207e8a
·
verified ·
1 Parent(s): 3918084

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +172 -176
  2. session_state.py +23 -23
app.py CHANGED
@@ -1,177 +1,173 @@
1
- # AIdeaText v3
2
- # app.py
3
- import logging
4
- import streamlit as st
5
- import sys
6
- import os
7
- from dotenv import load_dotenv
8
- from datetime import datetime
9
- from PIL import Image
10
-
11
- # Configuración básica
12
- load_dotenv()
13
- logging.basicConfig(level=logging.INFO)
14
- logger = logging.getLogger(__name__)
15
-
16
- # Configuración básica de la página
17
- st.set_page_config(
18
- page_title="AIdeaText",
19
- layout="wide",
20
- initial_sidebar_state="collapsed" # Para dar más espacio al logo
21
- )
22
-
23
- ######################
24
-
25
- ######################
26
-
27
- sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
28
-
29
- # Importaciones locales
30
- from translations import get_translations, get_landing_translations
31
- from session_state import initialize_session_state
32
- from modules.ui.ui import main as ui_main
33
- from modules.utils.spacy_utils import load_spacy_models
34
- from modules.utils.widget_utils import generate_unique_key
35
-
36
- # Importaciones de interfaces
37
- from modules.morphosyntax.morphosyntax_interface import (
38
- display_morphosyntax_interface,
39
- display_arc_diagram
40
- #display_morphosyntax_results
41
- )
42
-
43
- from modules.semantic.semantic_interface import (
44
- display_semantic_interface,
45
- display_semantic_results
46
- )
47
-
48
- from modules.discourse.discourse_interface import (
49
- display_discourse_interface,
50
- display_discourse_results
51
- )
52
-
53
- # Importaciones de base de datos
54
-
55
- from modules.database.database_init import initialize_database_connections
56
-
57
- from modules.database.sql_db import (
58
- get_user,
59
- get_admin_user,
60
- get_student_user,
61
- get_teacher_user,
62
- create_user,
63
- create_student_user,
64
- create_teacher_user,
65
- create_admin_user,
66
- update_student_user, # Agregada
67
- delete_student_user, # Agregada
68
- record_login,
69
- record_logout,
70
- get_recent_sessions,
71
- get_user_total_time,
72
- store_application_request,
73
- store_student_feedback
74
- )
75
-
76
- from modules.database.mongo_db import (
77
- get_collection,
78
- insert_document,
79
- find_documents,
80
- update_document,
81
- delete_document
82
- )
83
-
84
- from modules.database.morphosintax_mongo_db import (
85
- store_student_morphosyntax_result,
86
- get_student_morphosyntax_analysis
87
- )
88
-
89
- from modules.database.semantic_mongo_db import (
90
- store_student_semantic_result,
91
- get_student_semantic_analysis
92
- )
93
-
94
- from modules.database.chat_mongo_db import (
95
- store_chat_history,
96
- get_chat_history
97
- )
98
-
99
- # Importaciones de base de datos
100
- from modules.studentact.student_activities_v2 import display_student_activities
101
- from modules.studentact.current_situation_interface import display_current_situation_interface
102
-
103
- from modules.auth.auth import (
104
- authenticate_student,
105
- register_student,
106
- update_student_info,
107
- delete_student
108
- )
109
- from modules.admin.admin_ui import admin_page
110
-
111
- logging.basicConfig(level=logging.INFO)
112
- logger = logging.getLogger(__name__)
113
-
114
- @st.cache_resource(show_spinner=False)
115
- def initialize_nlp_models():
116
- logger.info("Cargando modelos de spaCy")
117
- models = load_spacy_models()
118
- logger.info("Modelos de spaCy cargados exitosamente")
119
- return models
120
-
121
- def app_main():
122
- try:
123
- logger.info("Entrando en app_main()")
124
-
125
- # Inicializar el estado de la sesión
126
- if 'initialized' not in st.session_state:
127
- initialize_session_state()
128
- st.session_state.initialized = True
129
-
130
- # Inicializar conexiones a bases de datos si no se ha hecho
131
- if 'db_initialized' not in st.session_state:
132
- st.session_state.db_initialized = initialize_database_connections()
133
-
134
- # Cargar modelos NLP si no se ha hecho
135
- if 'nlp_models' not in st.session_state:
136
- logger.info("Inicializando modelos NLP en la sesión")
137
- st.session_state.nlp_models = initialize_nlp_models()
138
- logger.info("Modelos NLP inicializados y almacenados en la sesión")
139
-
140
- # Inicializar estados de análisis si no existen
141
- if 'morphosyntax_state' not in st.session_state:
142
- st.session_state.morphosyntax_state = {
143
- 'last_analysis': None,
144
- 'analysis_count': 0
145
- }
146
-
147
- if 'semantic_state' not in st.session_state:
148
- st.session_state.semantic_state = {
149
- 'last_analysis': None,
150
- 'analysis_count': 0
151
- }
152
-
153
- # Configurar la página inicial si no está configurada
154
- if 'page' not in st.session_state:
155
- st.session_state.page = 'login'
156
-
157
- # Prevenir reinicios innecesarios preservando el estado
158
- if 'selected_tab' not in st.session_state:
159
- st.session_state.selected_tab = 0
160
-
161
- logger.info(f"Página actual: {st.session_state.page}")
162
- logger.info(f"Rol del usuario: {st.session_state.role}")
163
-
164
- # Dirigir el flujo a la interfaz de usuario principal
165
- logger.info(f"Llamando a ui_main() desde app_main()")
166
- ui_main()
167
-
168
- except Exception as e:
169
- logger.error(f"Error en app_main: {str(e)}", exc_info=True)
170
- st.error("Se ha producido un error en la aplicación. Por favor, inténtelo de nuevo más tarde.")
171
- if st.button("Reiniciar aplicación",
172
- key=generate_unique_key("app", "reset_button")):
173
- st.session_state.clear()
174
- st.rerun()
175
-
176
- if __name__ == "__main__":
177
  app_main()
 
1
+ # AIdeaText v3
2
+ # app.py
3
+ import logging
4
+ import streamlit as st
5
+ import sys
6
+ import os
7
+ from dotenv import load_dotenv
8
+ from datetime import datetime
9
+ from PIL import Image
10
+
11
+ # Configuración básica
12
+ load_dotenv()
13
+ logging.basicConfig(level=logging.INFO)
14
+ logger = logging.getLogger(__name__)
15
+
16
+ # Configuración básica de la página
17
+ st.set_page_config(
18
+ page_title="AIdeaText",
19
+ layout="wide",
20
+ initial_sidebar_state="collapsed" # Para dar más espacio al logo
21
+ )
22
+
23
+ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
24
+
25
+ # Importaciones locales
26
+ from translations import get_translations, get_landing_translations
27
+ from session_state import initialize_session_state
28
+ from modules.ui.ui import main as ui_main
29
+ from modules.utils.spacy_utils import load_spacy_models
30
+ from modules.utils.widget_utils import generate_unique_key
31
+
32
+ # Importaciones de interfaces
33
+ from modules.morphosyntax.morphosyntax_interface import (
34
+ display_morphosyntax_interface,
35
+ display_arc_diagram
36
+ #display_morphosyntax_results
37
+ )
38
+
39
+ from modules.semantic.semantic_interface import (
40
+ display_semantic_interface,
41
+ display_semantic_results
42
+ )
43
+
44
+ from modules.discourse.discourse_interface import (
45
+ display_discourse_interface,
46
+ display_discourse_results
47
+ )
48
+
49
+ # Importaciones de base de datos
50
+
51
+ from modules.database.database_init import initialize_database_connections
52
+
53
+ from modules.database.sql_db import (
54
+ get_user,
55
+ get_admin_user,
56
+ get_student_user,
57
+ get_teacher_user,
58
+ create_user,
59
+ create_student_user,
60
+ create_teacher_user,
61
+ create_admin_user,
62
+ update_student_user, # Agregada
63
+ delete_student_user, # Agregada
64
+ record_login,
65
+ record_logout,
66
+ get_recent_sessions,
67
+ get_user_total_time,
68
+ store_application_request,
69
+ store_student_feedback
70
+ )
71
+
72
+ from modules.database.mongo_db import (
73
+ get_collection,
74
+ insert_document,
75
+ find_documents,
76
+ update_document,
77
+ delete_document
78
+ )
79
+
80
+ from modules.database.morphosintax_mongo_db import (
81
+ store_student_morphosyntax_result,
82
+ get_student_morphosyntax_analysis
83
+ )
84
+
85
+ from modules.database.semantic_mongo_db import (
86
+ store_student_semantic_result,
87
+ get_student_semantic_analysis
88
+ )
89
+
90
+ from modules.database.chat_mongo_db import (
91
+ store_chat_history,
92
+ get_chat_history
93
+ )
94
+
95
+ # Importaciones de base de datos
96
+ from modules.studentact.student_activities_v2 import display_student_activities
97
+ from modules.studentact.current_situation_interface import display_current_situation_interface
98
+
99
+ from modules.auth.auth import (
100
+ authenticate_student,
101
+ register_student,
102
+ update_student_info,
103
+ delete_student
104
+ )
105
+ from modules.admin.admin_ui import admin_page
106
+
107
+ logging.basicConfig(level=logging.INFO)
108
+ logger = logging.getLogger(__name__)
109
+
110
+ @st.cache_resource(show_spinner=False)
111
+ def initialize_nlp_models():
112
+ logger.info("Cargando modelos de spaCy")
113
+ models = load_spacy_models()
114
+ logger.info("Modelos de spaCy cargados exitosamente")
115
+ return models
116
+
117
+ def app_main():
118
+ try:
119
+ logger.info("Entrando en app_main()")
120
+
121
+ # Inicializar el estado de la sesión
122
+ if 'initialized' not in st.session_state:
123
+ initialize_session_state()
124
+ st.session_state.initialized = True
125
+
126
+ # Inicializar conexiones a bases de datos si no se ha hecho
127
+ if 'db_initialized' not in st.session_state:
128
+ st.session_state.db_initialized = initialize_database_connections()
129
+
130
+ # Cargar modelos NLP si no se ha hecho
131
+ if 'nlp_models' not in st.session_state:
132
+ logger.info("Inicializando modelos NLP en la sesión")
133
+ st.session_state.nlp_models = initialize_nlp_models()
134
+ logger.info("Modelos NLP inicializados y almacenados en la sesión")
135
+
136
+ # Inicializar estados de análisis si no existen
137
+ if 'morphosyntax_state' not in st.session_state:
138
+ st.session_state.morphosyntax_state = {
139
+ 'last_analysis': None,
140
+ 'analysis_count': 0
141
+ }
142
+
143
+ if 'semantic_state' not in st.session_state:
144
+ st.session_state.semantic_state = {
145
+ 'last_analysis': None,
146
+ 'analysis_count': 0
147
+ }
148
+
149
+ # Configurar la página inicial si no está configurada
150
+ if 'page' not in st.session_state:
151
+ st.session_state.page = 'login'
152
+
153
+ # Prevenir reinicios innecesarios preservando el estado
154
+ if 'selected_tab' not in st.session_state:
155
+ st.session_state.selected_tab = 0
156
+
157
+ logger.info(f"Página actual: {st.session_state.page}")
158
+ logger.info(f"Rol del usuario: {st.session_state.role}")
159
+
160
+ # Dirigir el flujo a la interfaz de usuario principal
161
+ logger.info(f"Llamando a ui_main() desde app_main()")
162
+ ui_main()
163
+
164
+ except Exception as e:
165
+ logger.error(f"Error en app_main: {str(e)}", exc_info=True)
166
+ st.error("Se ha producido un error en la aplicación. Por favor, inténtelo de nuevo más tarde.")
167
+ if st.button("Reiniciar aplicación",
168
+ key=generate_unique_key("app", "reset_button")):
169
+ st.session_state.clear()
170
+ st.rerun()
171
+
172
+ if __name__ == "__main__":
 
 
 
 
173
  app_main()
session_state.py CHANGED
@@ -1,24 +1,24 @@
1
- import streamlit as st
2
-
3
- def initialize_session_state():
4
- if 'initialized' not in st.session_state:
5
- st.session_state.clear()
6
- st.session_state.initialized = True
7
- st.session_state.logged_in = False
8
- st.session_state.page = 'login'
9
- st.session_state.username = None
10
- st.session_state.role = None
11
- st.session_state.lang_code = 'es'
12
-
13
- # Inicializar la estructura para el chat morfosintáctico
14
- st.session_state.morphosyntax_chat_history = []
15
- st.session_state.morphosyntax_chat_input = ""
16
-
17
- def logout():
18
- for key in list(st.session_state.keys()):
19
- del st.session_state[key]
20
- initialize_session_state()
21
- st.session_state.logged_out = True # Añadimos esta bandera
22
-
23
- # Exportar las funciones
24
  __all__ = ['initialize_session_state', 'logout']
 
1
+ import streamlit as st
2
+
3
+ def initialize_session_state():
4
+ if 'initialized' not in st.session_state:
5
+ st.session_state.clear()
6
+ st.session_state.initialized = True
7
+ st.session_state.logged_in = False
8
+ st.session_state.page = 'login'
9
+ st.session_state.username = None
10
+ st.session_state.role = None
11
+ st.session_state.lang_code = 'es'
12
+
13
+ # Inicializar la estructura para el chat morfosintáctico
14
+ st.session_state.morphosyntax_chat_history = []
15
+ st.session_state.morphosyntax_chat_input = ""
16
+
17
+ def logout():
18
+ for key in list(st.session_state.keys()):
19
+ del st.session_state[key]
20
+ initialize_session_state()
21
+ st.session_state.logged_out = True # Añadimos esta bandera
22
+
23
+ # Exportar las funciones
24
  __all__ = ['initialize_session_state', 'logout']