From ef35b90372a771948c15bdff1c6b6b9ff77ee712 Mon Sep 17 00:00:00 2001 From: deajan Date: Thu, 18 Apr 2024 16:51:26 +0200 Subject: [PATCH] GUI: reimplement auto upgrade --- npbackup/gui/__main__.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/npbackup/gui/__main__.py b/npbackup/gui/__main__.py index f5ab1a2..779a74c 100644 --- a/npbackup/gui/__main__.py +++ b/npbackup/gui/__main__.py @@ -50,7 +50,7 @@ from npbackup.gui.config import config_gui from npbackup.gui.operations import operations_gui from npbackup.gui.helpers import get_anon_repo_uri, gui_thread_runner from npbackup.core.i18n_helper import _t -from npbackup.core.upgrade_runner import run_upgrade, check_new_version +from npbackup.core import upgrade_runner from npbackup.path_helper import CURRENT_DIR from npbackup.__version__ import version_string from npbackup.__debug__ import _DEBUG @@ -64,11 +64,7 @@ sg.theme(PYSIMPLEGUI_THEME) sg.SetOptions(icon=OEM_ICON) -def about_gui(version_string: str, full_config: dict = None) -> None: - if full_config and full_config.g("global_options.auto_upgrade_server_url"): - auto_upgrade_result = check_new_version(full_config) - else: - auto_upgrade_result = None +def about_gui(version_string: str, full_config: dict = None, auto_upgrade_result: bool = False) -> None: if auto_upgrade_result: new_version = [ sg.Button( @@ -107,7 +103,7 @@ def about_gui(version_string: str, full_config: dict = None) -> None: ) if result == "OK": logger.info("Running GUI initiated upgrade") - sub_result = run_upgrade(full_config) + sub_result = upgrade_runner.upgrade(full_config) if sub_result: sys.exit(0) else: @@ -449,6 +445,17 @@ def _main_gui(viewer_mode: bool): if args.repo_name: repo_name = args.repo_name + def check_for_auto_upgrade(full_config: dict) -> None: + if full_config and full_config.g("global_options.auto_upgrade_server_url"): + auto_upgrade_result = upgrade_runner.check_new_version(full_config) + if auto_upgrade_result: + r = sg.Popup(_t("config_gui.auto_upgrade_launch"), custom_text=(_t("generic.yes"), _t("generic.no"))) + if r == _t("generic.yes"): + result = upgrade_runner.run_upgrade(full_config) + if not result: + sg.Popup(_t("config_gui.auto_upgrade_failed")) + + def select_config_file(config_file: str = None) -> None: """ Option to select a configuration file @@ -794,6 +801,8 @@ def _main_gui(viewer_mode: bool): ] ] + check_for_auto_upgrade(full_config) + window = sg.Window( SHORT_PRODUCT_NAME, layout,