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