Add gui option to create a windows scheduled task

This commit is contained in:
Orsiris de Jong 2023-02-02 10:51:58 +01:00
parent fa28343084
commit 00c30c1731
7 changed files with 65 additions and 6 deletions

View file

@ -2,6 +2,7 @@
- Added a full auto-upgrade solution:
- Aupgrade client integrated into NPBackup, that can be called manually via --auto-upgrade or automatically run every n backups
- Upgrade server which servers files and their metadata
- Added a gui to create a scheduled task under Windows
- Improved setup.py to provide launch scripts for both Linux and Windows platforms
- Made windows cloud file filter optional (enabled by default)
- Added default configuration settings

View file

@ -30,4 +30,4 @@ rest:https://user:***@good.example.tld/user/
- Linux installer script
- Windows installer GUI
- Create task from GUI

View file

@ -10,11 +10,13 @@ __license__ = "GPL-3.0-only"
__build__ = "2023020101"
import sys
import os
from logging import getLogger
import PySimpleGUI as sg
import npbackup.configuration as configuration
from npbackup.core.i18n_helper import _t
from npbackup.windows.task import create_scheduled_task
from npbackup.path_helper import CURRENT_EXECUTABLE
logger = getLogger(__intname__)
@ -315,6 +317,18 @@ def config_gui(config_dict: dict, config_file: str):
],
]
scheduled_task_col = [
[
sg.Text(_t("config_gui.create_scheduled_task_every")),
sg.Input(key="scheduled_task_interval", size=(4, 1)),
sg.Text(_t("generic.minutes")),
sg.Button(_t("generic.create"), key="create_task")
],
[
sg.Text(_t("config_gui.scheduled_task_explanation"))
]
]
buttons = [
[
sg.Text(" " * 135),
@ -369,6 +383,15 @@ def config_gui(config_dict: dict, config_file: str):
element_justification="C",
)
],
[
sg.Tab(
_t("generic.scheduled_task"),
scheduled_task_col,
font="helvetica 16",
key="--tab-scheduled_task--",
element_justification="C",
)
],
]
layout = [
@ -411,5 +434,14 @@ def config_gui(config_dict: dict, config_file: str):
update_gui(window, config_dict, unencrypted=True)
else:
sg.PopupError(_t("config_gui.wrong_password"))
if event == "create_task":
if os.name == 'nt':
result = create_scheduled_task(CURRENT_EXECUTABLE, values['scheduled_task_interval'])
if result:
sg.Popup(_t("config_gui.scheduled_task_creation_success"))
else:
sg.PopupError(_t("config_gui.scheduled_task_creation_failure"))
else:
sg.PopupError(_t("config_gui.scheduled_task_creation_failure"))
window.close()
return config_dict

View file

@ -59,3 +59,8 @@ en:
auto_upgrade_launch: Launch auto upgrade
auto_ugprade_will_quit: Warning, launching an upgrade procedure will quit this program without notice. You will have to wait 5 minutes before launching it again for the upgrade to complete
auto_upgrade_failed: Auto upgrade procedure failed, see logs for further details
create_scheduled_task_every: Create scheduled task every
scheduled_task_explanation: This is for Windows only. On Linux, please create a crontab entry with `npbackup --backup --config-file /etc/npbackup.conf`
scheduled_task_creation_success: Scheduled task created successfuly
scheduled_task_creation_failure: Scheduled task could not be created. See logs for further info

View file

@ -59,3 +59,8 @@ fr:
auto_upgrade_launch: Lancer une mise à niveau
auto_ugprade_will_quit: Attnetion, la procédure de mise à niveau va quitter ce programme sans notification. Vous devrez attendre 5 minutes pour laisser la procédure se terminer avant de relancer le programme
auto_upgrade_failed: Procédure de mise à niveau échouée, veuillez consulter les journaux pour plus de détails
create_scheduled_task_every: Créer une tâche planifiée toutes les
scheduled_task_explanation: Uniquement sous Windows. Sous Linux, merci de créer une entrée crontab comme `npbackup --backup --config-file /etc/npbackup.conf`
scheduled_task_creation_success: Tâche planifiée crée avec succès
scheduled_task_creation_failure: Impossible de créer la tâche planifiée. Veuillez consulter les journaux pour plus de détails

View file

@ -5,11 +5,14 @@ en:
configure: Configure
about: About
options: Options
create: Create
_yes: Yes
_no: No
seconds: seconds
minutes: minutes
hours: hours
group: Group
@ -29,4 +32,9 @@ en:
decrypt: Decrypt
encrypt: Encrypt
is_uptodate: Program Uptodateu
is_uptodate: Program Uptodate
succes: Succes
failure: Failure
scheduled_task: Scheduled task

View file

@ -5,11 +5,14 @@ fr:
configure: Configurer
about: A propos
options: Options
create: Créer
_yes: Oui
_no: Non
seconds: secondes
minutes: minutes
hours: heures
group: Groupe
@ -30,3 +33,8 @@ fr:
encrypt: Chiffrer
is_uptodate: Logiciel à jour
succes: Succès
failure: Echec
scheduled_task: Tâche planifiée