Split auto_upgrader into check_new_version so we can actually show in GUI

This commit is contained in:
Orsiris de Jong 2023-02-01 21:04:35 +01:00
parent a0a1091a53
commit cbd8bbeb02
5 changed files with 52 additions and 20 deletions

View file

@ -11,12 +11,24 @@ __build__ = "2023011701"
from logging import getLogger
from npbackup.upgrade_client.upgrader import auto_upgrader
from npbackup.upgrade_client.upgrader import auto_upgrader, _check_new_version
logger = getLogger(__intname__)
def check_new_version(config_dict):
try:
upgrade_url = config_dict["options"]["server_url"]
username = config_dict["options"]["server_username"]
password = config_dict["options"]["server_password"]
except KeyError as exc:
logger.error("Missing auto upgrade info: %s, cannot launch auto upgrade", exc)
return False
else:
return _check_new_version(upgrade_url, username, password)
def run_upgrade(config_dict):
try:
auto_upgrade_upgrade_url = config_dict["options"]["server_url"]

View file

@ -34,7 +34,7 @@ from npbackup.customization import (
from npbackup.gui.config import config_gui
from npbackup.core.runner import NPBackupRunner
from npbackup.core.i18n_helper import _t
from npbackup.core.upgrade_runner import run_upgrade
from npbackup.core.upgrade_runner import run_upgrade, check_new_version
logger = getLogger(__intname__)
@ -46,6 +46,16 @@ THREAD_SHARED_DICT = {}
def _about_gui(version_string: str, config_dict: dict) -> None:
license_content = LICENSE_TEXT
if check_new_version(config_dict):
new_version = [
sg.Button(
_t("config_gui.auto_upgrade_launch"), key="autoupgrade", size=(12, 2)
)
]
else:
new_version = [
sg.Text(_t("generic.is_uptodate"))
]
try:
with open(LICENSE_FILE, "r") as file_handle:
license_content = file_handle.read()
@ -54,19 +64,16 @@ def _about_gui(version_string: str, config_dict: dict) -> None:
layout = [
[sg.Text(version_string)],
[
sg.Button(
_t("config_gui.auto_upgrade_launch"), key="autoupgrade", size=(12, 2)
)
],
new_version,
[sg.Text("License: GNU GPLv3")],
[sg.Multiline(license_content, size=(65, 20))],
[sg.Button(_t("generic.accept"), key="exit")],
]
window = sg.Window(
_t("generic.about"), layout, keep_on_top=True, element_justification="C"
_t("generic.about"), layout, keep_on_top=True, element_justification="C", finalize=True
)
while True:
event, _ = window.read()
if event in [sg.WIN_CLOSED, "exit"]:

View file

@ -28,3 +28,5 @@ en:
decrypt: Decrypt
encrypt: Encrypt
is_uptodate: Program Uptodateu

View file

@ -27,4 +27,6 @@ fr:
destination: Destination
decrypt: Déchiffrer
encrypt: Chiffrer
encrypt: Chiffrer
is_uptodate: Logiciel à jour

View file

@ -98,19 +98,10 @@ def need_upgrade(upgrade_interval: int) -> bool:
return False
def auto_upgrader(upgrade_url: str, username: str, password: str) -> bool:
def _check_new_version(upgrade_url: str, username: str, password: str) -> bool:
"""
Auto upgrade binary NPBackup distributions
We must check that we run a compiled binary first
We assume that we run a onefile nuitka binary
Check if we have a newer version of npbackup
"""
is_nuitka = "__compiled__" in globals()
if not is_nuitka:
logger.info(
"Auto upgrade will only upgrade compiled verions. Please use 'pip install --upgrade npbackup' instead"
)
return False
logger.info("Upgrade server is %s", upgrade_url)
requestor = Requestor(upgrade_url, username, password)
requestor.create_session(authenticated=True)
@ -148,6 +139,24 @@ def auto_upgrader(upgrade_url: str, username: str, password: str) -> bool:
)
return True
def auto_upgrader(upgrade_url: str, username: str, password: str) -> bool:
"""
Auto upgrade binary NPBackup distributions
We must check that we run a compiled binary first
We assume that we run a onefile nuitka binary
"""
is_nuitka = "__compiled__" in globals()
if not is_nuitka:
logger.info(
"Auto upgrade will only upgrade compiled verions. Please use 'pip install --upgrade npbackup' instead"
)
return False
if not _check_new_version(upgrade_url, username, password):
return False
requestor = Requestor(upgrade_url, username, password)
requestor.create_session(authenticated=True)
platform_and_arch = "{}/{}".format(get_os(), os_arch()).lower()
file_info = requestor.data_model("upgrades", id_record=platform_and_arch)