56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
import json
|
|
import os
|
|
from tkinter import messagebox
|
|
|
|
# Nombre del archivo donde se guardará la copia de seguridad
|
|
BACKUP_FILE = "app_backup.json"
|
|
|
|
def create_backup(alarms):
|
|
"""
|
|
Guarda el estado actual de las alarmas en un archivo JSON.
|
|
:param alarms: La lista de alarmas a guardar.
|
|
"""
|
|
try:
|
|
# Nota: Asumo que 'alarms' es la lista de alarmas obtenida, por ejemplo, de al.load_alarms()
|
|
# Si las alarmas son estructuras complejas (ej. clases), necesitarás serializarlas
|
|
# correctamente, pero para una lista de diccionarios, JSON es suficiente.
|
|
|
|
with open(BACKUP_FILE, 'w', encoding='utf-8') as f:
|
|
json.dump({'alarms': alarms}, f, indent=4)
|
|
|
|
messagebox.showinfo("Copia de Seguridad", f"Copia de seguridad creada con éxito en:\n{os.path.abspath(BACKUP_FILE)}")
|
|
return True
|
|
|
|
except Exception as e:
|
|
messagebox.showerror("Error de Copia de Seguridad", f"Error al crear la copia de seguridad: {e}")
|
|
return False
|
|
|
|
def restore_backup():
|
|
"""
|
|
Carga el estado de las alarmas desde el archivo de copia de seguridad.
|
|
:return: La lista de alarmas cargada o None si falla.
|
|
"""
|
|
if not os.path.exists(BACKUP_FILE):
|
|
messagebox.showwarning("Restauración", "No se encontró ningún archivo de copia de seguridad.")
|
|
return None
|
|
|
|
try:
|
|
with open(BACKUP_FILE, 'r', encoding='utf-8') as f:
|
|
data = json.load(f)
|
|
alarms = data.get('alarms', [])
|
|
|
|
# Aquí necesitarías una función en 'alarm_logic.py' para sobrescribir
|
|
# el estado actual con el estado restaurado. Si 'alarm_logic' usa un
|
|
# archivo persistente, podrías reemplazar ese archivo con el contenido
|
|
# de 'alarms', o llamar a una función para guardar el estado.
|
|
|
|
# Nota: Dado que 'alarm_logic.py' no está completo aquí,
|
|
# se devuelve la lista de alarmas y se debe manejar en el main.
|
|
|
|
return alarms
|
|
|
|
except Exception as e:
|
|
messagebox.showerror("Error de Restauración", f"Error al cargar la copia de seguridad: {e}")
|
|
return None
|
|
|
|
# Fin de backup_logic.py |