Pfadharmonisierungen für Docker und Native

This commit is contained in:
Alexander Malzkuhn 2025-06-05 13:05:01 +02:00
parent b6a1db63bc
commit a5c664b9ae
6 changed files with 22 additions and 26 deletions

View File

@ -7,8 +7,8 @@ services:
environment:
- PYTHONUNBUFFERED=1
volumes:
- /home/alexander/Dokumente/Python/Zeiterfassung/lib:/app/lib
- /home/alexander/Dokumente/Python/Zeiterfassung/main.py:/app/main.py
#- /home/alexander/Dokumente/Python/Zeiterfassung/lib:/app/lib
#- /home/alexander/Dokumente/Python/Zeiterfassung/main.py:/app/main.py
- /home/alexander/Dokumente/Python/Zeiterfassung/docker-work/users:/users
- /home/alexander/Dokumente/Python/Zeiterfassung/docker-work/backup:/backup
- /home/alexander/Dokumente/Python/Zeiterfassung/docker-work/settings:/settings

View File

@ -1189,7 +1189,7 @@ def page_admin():
ui.notify("Benutzer gelöscht")
with ui.dialog() as dialog, ui.card():
ui.label(f"Soll der Benutzer *{current_user.username}* gelöscht werden?")
ui.markdown(f"Soll der Benutzer *{current_user.username}* gelöscht werden?")
ui.label("Dies kann nicht rückgängig gemacht werden?").classes('text-bold')
with ui.row():
ui.button("Löschen", on_click=del_definitely)
@ -1446,6 +1446,9 @@ def page_admin():
with ui.tab_panel(backups):
try:
if is_docker():
backupfolder = "/backup"
else:
backupfolder = load_adminsettings()["backup_folder"]
except KeyError:
pass
@ -1564,7 +1567,7 @@ def page_admin():
if is_docker():
folder_to_delete = "/users"
else:
folder_to_delete = os.path.join(scriptpath, userfolder)
folder_to_delete = userfolder
for file_path in os.listdir(folder_to_delete):
delete_item = os.path.join(folder_to_delete, file_path)
if os.path.isfile(delete_item) or os.path.islink(delete_item):
@ -1572,17 +1575,13 @@ def page_admin():
elif os.path.isdir(delete_item):
shutil.rmtree(delete_item)
with zipfile.ZipFile(os.path.join(scriptpath, backupfolder, f'{file}.zip'), 'r') as source:
if not is_docker():
source.extractall(scriptpath)
os.unlink(os.path.join(scriptpath, "app_version.txt"))
else:
with zipfile.ZipFile(os.path.join(backupfolder, f'{file}.zip'), 'r') as source:
user_target = userfolder.strip("users")
filelist = source.namelist()
print(filelist)
for file_list_item in filelist:
if file_list_item.startswith("users"):
source.extract(file_list_item, "/")
source.extract("settings.json", "/settings/")
source.extract(file_list_item, user_target)
source.extract("settings.json", scriptpath)
with ui.dialog() as confirm_dialog, ui.card():
ui.label("Das Backup wurde wiederhergestellt. Um Änderungen anzuzeigen, muss die Seite neu geladen werden.")
with ui.grid(columns=2):
@ -1613,7 +1612,7 @@ def page_admin():
n = ui.notification("Backup wird erzeugt...")
compress = zipfile.ZIP_DEFLATED
filename = os.path.join(searchpath, datetime.datetime.now().strftime(date_format) + '.zip')
folder = userfolder
folder = userfolder.replace(f'{scriptpath}/', '')
with zipfile.ZipFile(filename, 'w', compress) as target:
for root, dirs, files in os.walk(folder):
for file in files:

View File

@ -543,7 +543,7 @@ def backup_api(api_key: str):
def make_backup():
compress = zipfile.ZIP_DEFLATED
filename = os.path.join(searchpath, datetime.now().strftime(date_format) + '.zip')
folder = userfolder
folder = userfolder.replace(f"{scriptpath}/")
with zipfile.ZipFile(filename, 'w', compress) as target:
for root, dirs, files in os.walk(folder):
for file in files:

View File

@ -17,10 +17,11 @@ def is_docker():
if is_docker():
scriptpath = "/settings"
backupfolder = "/backup"
userfolder = "/users"
else:
scriptpath = str(Path(os.path.dirname(os.path.abspath(__file__))).parent.absolute())
backupfolder = str(os.path.join(scriptpath, "backup"))
userfolder = "users"
userfolder = os.path.join(scriptpath, "users")
# Dateinamen

View File

@ -21,7 +21,7 @@ from lib.definitions import userfolder, scriptpath, usersettingsfilename, photof
class user:
def __init__(self, name):
if not is_docker():
self.userfolder = os.path.join(scriptpath, userfolder, name)
self.userfolder = os.path.join(userfolder, name)
else:
self.userfolder = os.path.join("/users", name)
self.settingsfile = os.path.join(self.userfolder, usersettingsfilename)
@ -134,9 +134,9 @@ class user:
pathcheck = self.userfolder
if not is_docker():
pathcheck = pathcheck.removeprefix(os.path.join(scriptpath, userfolder))
pathcheck = pathcheck.removeprefix(os.path.join(userfolder))
if pathcheck != self.username:
os.rename(self.userfolder, os.path.join(scriptpath, userfolder, self.username))
os.rename(self.userfolder, os.path.join(userfolder, self.username))
else:
pathcheck = pathcheck.removeprefix("/users")
if pathcheck != self.username:

View File

@ -54,10 +54,6 @@ def main():
ui.toggle.default_props('rounded')
ui.row.default_classes('items-baseline')
#if not os.path.exists(os.path.join(scriptpath, "favicon.svg")):
# with open(os.path.join(scriptpath, "favicon.svg"), 'w') as favicon_file:
# favicon_file.write(favicon)
ui.run(favicon='', port=port, storage_secret=secret, language='de-DE', show_welcome_message=False)
if __name__ in ("__main__", "__mp_main__"):