AIdeaText commited on
Commit
3ec6163
·
verified ·
1 Parent(s): 6674bfa

Update modules/admin/admin_ui.py

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