From 49a2bbd5df54b7a59d93338d4f930a3aaa07ab79 Mon Sep 17 00:00:00 2001 From: Divyansh Singh Date: Tue, 6 Jun 2023 00:16:53 +0530 Subject: [PATCH 1/5] feat: remove compact button for older borg versions --- src/vorta/borg/compact.py | 7 +------ src/vorta/views/archive_tab.py | 7 ++++++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/vorta/borg/compact.py b/src/vorta/borg/compact.py index acf495d55..1b96e6a8a 100644 --- a/src/vorta/borg/compact.py +++ b/src/vorta/borg/compact.py @@ -1,7 +1,7 @@ from typing import Any, Dict from vorta.config import LOG_DIR -from vorta.i18n import trans_late, translate +from vorta.i18n import translate from vorta.utils import borg_compat from .borg_job import BorgJob @@ -43,11 +43,6 @@ def prepare(cls, profile): else: ret['ok'] = False # Set back to false, so we can do our own checks here. - if not borg_compat.check('COMPACT_SUBCOMMAND'): - ret['ok'] = False - ret['message'] = trans_late('messages', 'This feature needs Borg 1.2.0 or higher.') - return ret - cmd = ['borg', '--info', '--log-json', 'compact', '--progress'] if borg_compat.check('V2'): cmd = cmd + ["-r", profile.repo.url] diff --git a/src/vorta/views/archive_tab.py b/src/vorta/views/archive_tab.py index f5b92c8ee..18a984101 100644 --- a/src/vorta/views/archive_tab.py +++ b/src/vorta/views/archive_tab.py @@ -34,6 +34,7 @@ from vorta.i18n import translate from vorta.store.models import ArchiveModel, BackupProfileMixin from vorta.utils import ( + borg_compat, choose_file_dialog, find_best_unit_for_sizes, format_archive_name, @@ -112,7 +113,11 @@ def __init__(self, parent=None, app=None): self.bRename.clicked.connect(self.rename_action) self.bDelete.clicked.connect(self.delete_action) self.bExtract.clicked.connect(self.extract_action) - self.compactButton.clicked.connect(self.compact_action) + + if not borg_compat.check('COMPACT_SUBCOMMAND'): + self.compactButton.hide() + else: + self.compactButton.clicked.connect(self.compact_action) # other signals self.bList.clicked.connect(self.refresh_archive_list) From 971168cfbf4e24972bb3a92db50b22f54d493bfd Mon Sep 17 00:00:00 2001 From: Divyansh Singh Date: Tue, 6 Jun 2023 00:46:08 +0530 Subject: [PATCH 2/5] update for tests --- src/vorta/application.py | 1 + src/vorta/views/archive_tab.py | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/vorta/application.py b/src/vorta/application.py index 4885b3045..48822e9ad 100644 --- a/src/vorta/application.py +++ b/src/vorta/application.py @@ -175,6 +175,7 @@ def set_borg_details_result(self, result): borg_compat.set_version(result['data']['version'], result['data']['path']) self.main_window.miscTab.set_borg_details(borg_compat.version, borg_compat.path) self.main_window.repoTab.toggle_available_compression() + self.main_window.archiveTab.toggle_compact_button_visibility() self.scheduler.reload_all_timers() # Start timer after Borg version is set. else: self._alert_missing_borg() diff --git a/src/vorta/views/archive_tab.py b/src/vorta/views/archive_tab.py index 18a984101..6cb0a64ed 100644 --- a/src/vorta/views/archive_tab.py +++ b/src/vorta/views/archive_tab.py @@ -113,11 +113,7 @@ def __init__(self, parent=None, app=None): self.bRename.clicked.connect(self.rename_action) self.bDelete.clicked.connect(self.delete_action) self.bExtract.clicked.connect(self.extract_action) - - if not borg_compat.check('COMPACT_SUBCOMMAND'): - self.compactButton.hide() - else: - self.compactButton.clicked.connect(self.compact_action) + self.compactButton.clicked.connect(self.compact_action) # other signals self.bList.clicked.connect(self.refresh_archive_list) @@ -959,3 +955,9 @@ def rename_result(self, result): self.populate_from_profile() else: self._toggle_all_buttons(True) + + def toggle_compact_button_visibility(self): + if borg_compat.check("COMPACT_SUBCOMMAND"): + self.compactButton.show() + else: + self.compactButton.hide() From 4fc0ee9a29625e4f7e713b6f3b71e84df3e000ea Mon Sep 17 00:00:00 2001 From: Divyansh Singh Date: Tue, 13 Jun 2023 00:37:16 +0530 Subject: [PATCH 3/5] disable button instead of hiding --- src/vorta/borg/compact.py | 3 +++ src/vorta/views/archive_tab.py | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vorta/borg/compact.py b/src/vorta/borg/compact.py index 1b96e6a8a..ebe46a3fa 100644 --- a/src/vorta/borg/compact.py +++ b/src/vorta/borg/compact.py @@ -43,6 +43,9 @@ def prepare(cls, profile): else: ret['ok'] = False # Set back to false, so we can do our own checks here. + if not borg_compat.check('COMPACT_SUBCOMMAND'): + raise Exception('The compact action needs Borg >= 1.2.0') + cmd = ['borg', '--info', '--log-json', 'compact', '--progress'] if borg_compat.check('V2'): cmd = cmd + ["-r", profile.repo.url] diff --git a/src/vorta/views/archive_tab.py b/src/vorta/views/archive_tab.py index 6cb0a64ed..8c1652dea 100644 --- a/src/vorta/views/archive_tab.py +++ b/src/vorta/views/archive_tab.py @@ -958,6 +958,8 @@ def rename_result(self, result): def toggle_compact_button_visibility(self): if borg_compat.check("COMPACT_SUBCOMMAND"): - self.compactButton.show() + self.compactButton.setEnabled(True) else: - self.compactButton.hide() + self.compactButton.setEnabled(False) + tooltip = self.compactButton.toolTip() + self.compactButton.setToolTip(tooltip + " " + self.tr("(This feature needs Borg 1.2.0 or higher)")) From 64012358243262372e430286250c3ecb94c4dd9a Mon Sep 17 00:00:00 2001 From: Divyansh Singh Date: Thu, 15 Jun 2023 02:33:32 +0530 Subject: [PATCH 4/5] add docstring to toggle_compact_btn_vis --- src/vorta/views/archive_tab.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vorta/views/archive_tab.py b/src/vorta/views/archive_tab.py index 8c1652dea..bc268791d 100644 --- a/src/vorta/views/archive_tab.py +++ b/src/vorta/views/archive_tab.py @@ -957,6 +957,10 @@ def rename_result(self, result): self._toggle_all_buttons(True) def toggle_compact_button_visibility(self): + """ + Enable or disable the compact button depending on the Borg version. + This function runs only once, on startup. + """ if borg_compat.check("COMPACT_SUBCOMMAND"): self.compactButton.setEnabled(True) else: From 7989a0394e5f74f6e8bb94e553ea56494a786fe8 Mon Sep 17 00:00:00 2001 From: Divyansh Singh Date: Sat, 24 Jun 2023 00:31:11 +0530 Subject: [PATCH 5/5] run compat check when profile is changes --- src/vorta/views/archive_tab.py | 6 ++++-- src/vorta/views/main_window.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vorta/views/archive_tab.py b/src/vorta/views/archive_tab.py index bc268791d..36ae7553c 100644 --- a/src/vorta/views/archive_tab.py +++ b/src/vorta/views/archive_tab.py @@ -76,6 +76,7 @@ def __init__(self, parent=None, app=None): self.tooltip_dict: Dict[QWidget, str] = {} self.tooltip_dict[self.bDiff] = self.bDiff.toolTip() self.tooltip_dict[self.bDelete] = self.bDelete.toolTip() + self.tooltip_dict[self.compactButton] = self.compactButton.toolTip() header = self.archiveTable.horizontalHeader() header.setVisible(True) @@ -959,11 +960,12 @@ def rename_result(self, result): def toggle_compact_button_visibility(self): """ Enable or disable the compact button depending on the Borg version. - This function runs only once, on startup. + This function runs once on startup, and everytime the profile is changed. """ if borg_compat.check("COMPACT_SUBCOMMAND"): self.compactButton.setEnabled(True) + self.compactButton.setToolTip(self.tooltip_dict[self.compactButton]) else: self.compactButton.setEnabled(False) - tooltip = self.compactButton.toolTip() + tooltip = self.tooltip_dict[self.compactButton] self.compactButton.setToolTip(tooltip + " " + self.tr("(This feature needs Borg 1.2.0 or higher)")) diff --git a/src/vorta/views/main_window.py b/src/vorta/views/main_window.py index ca0c2426b..fab20dfe4 100644 --- a/src/vorta/views/main_window.py +++ b/src/vorta/views/main_window.py @@ -167,6 +167,7 @@ def profile_select_action(self, index): SettingsModel.update({SettingsModel.str_value: self.current_profile.id}).where( SettingsModel.key == 'previous_profile_id' ).execute() + self.archiveTab.toggle_compact_button_visibility() def profile_rename_action(self): window = EditProfileWindow(rename_existing_id=self.profileSelector.currentData())