AIdeaText commited on
Commit
e9b3ccd
·
verified ·
1 Parent(s): be0149f

Update modules/admin/admin_ui.py

Browse files
Files changed (1) hide show
  1. modules/admin/admin_ui.py +60 -23
modules/admin/admin_ui.py CHANGED
@@ -133,36 +133,62 @@ def admin_page():
133
  else:
134
  st.error("Estudiante no encontrado")
135
 
 
136
  # Tab 3: Actividad de la Plataforma
137
  with tab3:
138
  st.header("Actividad Reciente")
139
 
140
- # Obtener sesiones recientes
141
- recent_sessions = get_recent_sessions(10)
 
 
 
 
 
 
142
 
143
  if recent_sessions:
144
  # Crear dataframe para mostrar los datos
145
  sessions_data = []
146
  for session in recent_sessions:
147
- # Convertir loginTime a formato legible
148
- login_time = datetime.fromisoformat(
149
- session['loginTime'].rstrip('Z')
150
- ).strftime("%Y-%m-%d %H:%M:%S")
151
-
152
- # Manejar el caso de logout_time cuando la sesión está activa
153
- if session.get('logoutTime') and session['logoutTime'] != "Activo":
154
- logout_time = datetime.fromisoformat(
155
- session['logoutTime'].rstrip('Z')
156
- ).strftime("%Y-%m-%d %H:%M:%S")
157
- else:
158
- logout_time = "Activo"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
- sessions_data.append({
161
- "Usuario": session['username'],
162
- "Inicio de Sesión": login_time,
163
- "Fin de Sesión": logout_time,
164
- "Duración": format_duration(session.get('sessionDuration', 0))
165
- })
166
 
167
  # Mostrar tabla con estilos
168
  st.dataframe(
@@ -197,13 +223,24 @@ def admin_page():
197
  st.metric("Total de Sesiones", total_sessions)
198
  with metric_col2:
199
  st.metric("Usuarios Únicos", total_users)
200
-
201
  else:
202
- st.info("No hay registros de sesiones recientes")
 
 
 
 
 
 
 
 
 
203
 
 
 
204
  # Agregar una línea divisoria antes del botón
205
  st.markdown("---")
206
-
 
207
  # Centrar el botón de cierre de sesión
208
  col1, col2, col3 = st.columns([2,1,2])
209
  with col2:
 
133
  else:
134
  st.error("Estudiante no encontrado")
135
 
136
+ #######################################################################
137
  # Tab 3: Actividad de la Plataforma
138
  with tab3:
139
  st.header("Actividad Reciente")
140
 
141
+ # Agregar botón de actualización
142
+ if st.button("Actualizar datos", key="refresh_sessions", type="primary"):
143
+ st.rerun()
144
+
145
+ # Mostrar spinner mientras carga
146
+ with st.spinner("Cargando datos de sesiones..."):
147
+ # Obtener sesiones recientes
148
+ recent_sessions = get_recent_sessions(20) # Aumentado a 20 para más datos
149
 
150
  if recent_sessions:
151
  # Crear dataframe para mostrar los datos
152
  sessions_data = []
153
  for session in recent_sessions:
154
+ try:
155
+ # Manejar el formato de fecha con manejo de excepciones
156
+ try:
157
+ login_time = datetime.fromisoformat(
158
+ session['loginTime'].replace('Z', '+00:00')
159
+ ).strftime("%Y-%m-%d %H:%M:%S")
160
+ except Exception as e:
161
+ login_time = session['loginTime']
162
+
163
+ # Manejar el caso de logout_time cuando la sesión está activa
164
+ if session.get('logoutTime') and session['logoutTime'] != "Activo":
165
+ try:
166
+ logout_time = datetime.fromisoformat(
167
+ session['logoutTime'].replace('Z', '+00:00')
168
+ ).strftime("%Y-%m-%d %H:%M:%S")
169
+ except Exception as e:
170
+ logout_time = session['logoutTime']
171
+ else:
172
+ logout_time = "Activo"
173
+
174
+ # Agregar datos a la lista
175
+ sessions_data.append({
176
+ "Usuario": session.get('username', 'Desconocido'),
177
+ "Inicio de Sesión": login_time,
178
+ "Fin de Sesión": logout_time,
179
+ "Duración": format_duration(session.get('sessionDuration', 0))
180
+ })
181
+ except Exception as e:
182
+ st.error(f"Error procesando sesión: {str(e)}")
183
+ continue
184
+
185
+ # Mostrar información de depuración si hay problemas
186
+ with st.expander("Información de depuración", expanded=False):
187
+ st.write("Datos crudos recuperados:")
188
+ st.json(recent_sessions)
189
 
190
+ st.write("Datos procesados para mostrar:")
191
+ st.json(sessions_data)
 
 
 
 
192
 
193
  # Mostrar tabla con estilos
194
  st.dataframe(
 
223
  st.metric("Total de Sesiones", total_sessions)
224
  with metric_col2:
225
  st.metric("Usuarios Únicos", total_users)
 
226
  else:
227
+ st.info("No hay registros de sesiones recientes o hubo un problema al recuperarlos.")
228
+
229
+ # Ayuda de depuración
230
+ if st.button("Mostrar diagnóstico"):
231
+ st.write("Verificando la función get_recent_sessions:")
232
+ container = get_container("users_sessions")
233
+ if container:
234
+ st.success("✅ Conectado al contenedor users_sessions")
235
+ else:
236
+ st.error("❌ No se pudo conectar al contenedor users_sessions")
237
 
238
+
239
+ #######################################################################
240
  # Agregar una línea divisoria antes del botón
241
  st.markdown("---")
242
+
243
+ #######################################################################
244
  # Centrar el botón de cierre de sesión
245
  col1, col2, col3 = st.columns([2,1,2])
246
  with col2: