Aplicación de demostración

explorador.py Explorador visual de dos servidores SFTP con interfaz gráfica.

Este módulo proporciona una aplicación de escritorio basada en Tkinter que permite visualizar, comparar, copiar y borrar archivos entre dos servidores SFTP configurados. Utiliza la librería abm_servidor para las operaciones de red.

Ejemplo de uso:

python explorador.py
Dependencias:
  • tkinter

  • abm_servidor.ABMServidor

class explorador.PanelServidor(parent: Widget, abm: ABMServidor, lado: str, otro_panel=None)

Bases: object

Panel de interfaz gráfica que representa y gestiona la visualización y operaciones de un servidor SFTP específico.

Cada instancia de esta clase corresponde a un lado de la ventana (Izquierdo o Derecho) y mantiene su propio estado de conexión, caché de archivos y elementos de la interfaz.

_borrar_seleccionado()

Elimina el archivo seleccionado del servidor actual.

Solicita confirmación explícita al usuario antes de ejecutar ABMServidor.borrar_archivo. Si la operación es exitosa, refresca automáticamente la lista de archivos del panel.

_comparar_seleccionado()

Compara el archivo seleccionado con su equivalente en el servidor del panel opuesto.

Calcula la ruta equivalente en el otro servidor utilizando las ruta_base de cada configuración. Utiliza ABMServidor.archivo_existe para obtener el tamaño y la fecha de modificación de ambos lados sin descargar los archivos. Muestra un resumen detallado en un cuadro de diálogo.

_copiar_seleccionado()

Copia el archivo seleccionado en este panel hacia el servidor del panel opuesto.

Valida que ambos servidores estén seleccionados, calcula la ruta destino equivalente, solicita confirmación al usuario (especialmente si el archivo ya existe en destino) y ejecuta ABMServidor.copiar_archivo. Al finalizar, refresca automáticamente el panel destino.

static _formatear_tamaño(tamaño: int) → str

Convierte un tamaño en bytes a una cadena legible (B, KB, MB).

Parámetros:

tamaño (int) – Tamaño del archivo en bytes.

Devuelve:

Tamaño formateado con su unidad correspondiente.

Tipo del valor devuelto:

str

_listar()

Solicita el listado completo de archivos al servidor seleccionado mediante ABMServidor.listar_todos_archivos y los renderiza en el Treeview.

Muestra el progreso en la barra de estado y maneja errores de conexión.

_on_servidor_change(event: Event)

Callback ejecutado cuando el usuario cambia el servidor en el combobox. Actualiza la variable interna servidor_actual.

Parámetros:

event (tk.Event) – Evento de selección del combobox.

set_otro_panel(otro_panel: PanelServidor)

Asigna la referencia al panel opuesto para habilitar operaciones cruzadas.

Parámetros:

otro_panel (PanelServidor) – Instancia del panel contrario.

explorador.main()

Punto de entrada de la aplicación.

Inicializa la ventana principal de Tkinter, crea la instancia de ABMServidor y configura los dos paneles (Izquierdo y Derecho) con sus servidores por defecto.