Exemplo n.º 1
0
    def backup(self):
        """
        function takes gui inputs, plugs into backup class
        runs backup
        displays relevant outputs

        flow:
         - get inputs from input boxes
         - check inputs
         - disable buttons
         - create backup object
         -  start timer
         - run back function
         - end timer
         - display time taken

        """
        target_folder = self.target_folder.get()
        backup_folder = self.backup_path.get()
        password = self.pass_box.get()

        if not self.check_inputs(target_folder, backup_folder, password):
            return

        self.disable_buttons()

        backup_obj = Backup(target_folder, backup_folder, password)

        start = time.time()
        try:
            dest = backup_obj.backup(ui_caller=self)
        except OSError as e:
            messagebox.showerror(
                "OS Error", f"Following Error Occurred During Backup: {e}")
            self("Error Occurred, Backup Aborted")
            self.enable_buttons()
            return

        end = time.time()

        t = datetime(1, 1, 1) + timedelta(seconds=(end - start))
        self(
            f"Time Taken: {t.hour} Hours: {t.minute} Minutes: {t.second} Seconds"
        )
        self.enable_buttons()

        messagebox.showinfo(
            "Backup Complete",
            f"Backup Successfully completed\n Output File: {dest}")