Backupbackend angepasst

Dateigrößen
Backup Upload
This commit is contained in:
Alexander Malzkuhn 2025-05-26 22:14:17 +02:00
parent 0d5d977a1e
commit 681ad9d3fe

View File

@ -626,6 +626,8 @@ Dies kann nicht rückgängig gemacht werden!''')
output_dict["button_height"] = button_height_input.value output_dict["button_height"] = button_height_input.value
output_dict["user_notes"] = notes_switch.value output_dict["user_notes"] = notes_switch.value
output_dict["holidays"] = data["holidays"] output_dict["holidays"] = data["holidays"]
output_dict["version"] = app_version
json_dict = json.dumps(output_dict, indent=4) json_dict = json.dumps(output_dict, indent=4)
with open(os.path.join(scriptpath, usersettingsfilename), "w") as outputfile: with open(os.path.join(scriptpath, usersettingsfilename), "w") as outputfile:
outputfile.write(json_dict) outputfile.write(json_dict)
@ -1248,32 +1250,40 @@ Dies kann nicht rückgängig gemacht werden!''')
ui.markdown('**Backups**') ui.markdown('**Backups**')
date_format = '%Y-%m-%d_%H-%M' date_format = '%Y-%m-%d_%H-%M'
searchpath = os.path.join(scriptpath, backupfolder)
@ui.refreshable @ui.refreshable
def backup_list(): def backup_list():
if not os.path.isdir(os.path.join(scriptpath, backupfolder)):
os.makedirs(os.path.join(scriptpath, backupfolder)) if not os.path.isdir(searchpath):
os.makedirs(os.path.join(searchpath))
backup_files = [] backup_files = []
with ui.grid(columns='auto auto auto'): file_and_size = []
for file in os.listdir(os.path.join(scriptpath, backupfolder)): with ui.grid(columns='auto auto auto auto auto'):
for file in os.listdir(searchpath):
if file.endswith(".zip"): if file.endswith(".zip"):
backup_files.append(file) file_and_size = [file, os.path.getsize(os.path.join(searchpath, file))]
backup_files.append(file_and_size)
backup_files.sort() backup_files.sort()
backup_files.reverse() backup_files.reverse()
if len(backup_files) == 0: if len(backup_files) == 0:
ui.label("Keine Backups vorhanden") ui.label("Keine Backups vorhanden")
for file in backup_files: for file, size in backup_files:
date_string = file[0:-4] date_string = file[0:-4]
try: try:
date_string_dt = datetime.datetime.strptime(date_string, date_format) date_string_dt = datetime.datetime.strptime(date_string, date_format)
button_string = date_string_dt.strftime('%d.%m.%Y - %H:%M') button_string = date_string_dt.strftime('%d.%m.%Y - %H:%M')
except ValueError: except ValueError:
button_string = date_string button_string = date_string
ui.button(button_string, ui.markdown(button_string)
on_click=lambda file=date_string: ui.download.file(os.path.join(scriptpath, backupfolder, f'{file}.zip'))).tooltip("Backup herunterladen") ui.markdown(f'{round(size/1_000_000,2)} MB')
ui.button(icon='download', on_click=lambda file=date_string: ui.download.file(
os.path.join(scriptpath, backupfolder, f'{file}.zip'))).tooltip(
"Backup herunterladen")
def del_backup_dialog(file): def del_backup_dialog(file):
def del_backup(): def del_backup():
@ -1320,7 +1330,8 @@ Dies kann nicht rückgängig gemacht werden!''')
ui.separator() ui.separator()
def make_backup(): async def make_backup():
n = ui.notification("Backup wird erzeugt...")
compress = zipfile.ZIP_DEFLATED compress = zipfile.ZIP_DEFLATED
filename = os.path.join(scriptpath, backupfolder, filename = os.path.join(scriptpath, backupfolder,
datetime.datetime.now().strftime(date_format) + '.zip') datetime.datetime.now().strftime(date_format) + '.zip')
@ -1332,9 +1343,35 @@ Dies kann nicht rückgängig gemacht werden!''')
target.write(add) target.write(add)
target.write(usersettingsfilename) target.write(usersettingsfilename)
backup_list.refresh() backup_list.refresh()
n.dismiss()
ui.notify("Backup erstellt")
ui.button("Neues Backup erstellen", on_click=make_backup) ui.button("Neues Backup erstellen", on_click=make_backup)
def handle_upload(e: events.UploadEventArguments):
filename = e.name
upload = True
if os.path.exists(os.path.join(searchpath, filename )):
with ui.dialog() as dialog, ui.card():
ui.label("Datei mit diesem Namen existiert bereits. Die Datei kann nicht hochgeladen werden.")
ui.button("OK", on_click=dialog.close)
dialog.open()
upload = False
if upload:
content = e.content.read()
with open(os.path.join(searchpath, filename), 'wb') as output:
output.write(content)
ui.notify("Datei hochgeladen")
backup_list.refresh()
uploader.reset()
ui.separator()
ui.label("Backup hochladen").classes('font-bold')
ui.label(f"Stellen Sie sicher, dass Sie nur zur aktuellen Programmversion ({app_version}) Backups hochladen.")
uploader = ui.upload(on_upload=handle_upload).props('accept=.zip')
# Alternativ zur Loginseite navigieren # Alternativ zur Loginseite navigieren
else: else:
login = login_mask() login = login_mask()