diff --git a/admin.py b/admin.py index 1d1d4fc..d2e8c34 100644 --- a/admin.py +++ b/admin.py @@ -35,9 +35,8 @@ def page_admin(): with ui.tabs() as tabs: time_overview = ui.tab('Zeitübersichten') - admin_user = ui.tab('Admin Benutzer') - users = ui.tab('Benutzer') settings = ui.tab('Einstellungen') + users = ui.tab('Benutzer') with ((ui.tab_panels(tabs, value=time_overview))): @@ -444,25 +443,46 @@ Dies kann nicht rückgägig gemacht werden!''') button_update.move(timetable_header) - with ui.tab_panel(admin_user): - with ui.grid(columns=2): - def save_admin_settings(): - output_dict = { } - output_dict["admin_user"] = admin_user.value - output_dict["adnin_password"] = admin_password.value - json_dict = json.dumps(output_dict, indent=4) - with open(f"{scriptpath}/{usersettingsfilename}", "w") as outputfile: - outputfile.write(json_dict) - ui.notify("Einstellungen gespeichert") + with ui.tab_panel(settings): + with ui.card(): + ui.markdown("**Administrationsbenutzer:**") + with ui.grid(columns=2): + def save_admin_settings(): + output_dict = { } + output_dict["admin_user"] = admin_user.value + output_dict["admin_password"] = admin_password.value + output_dict["port"] = port.value + output_dict["secret"] = secret + json_dict = json.dumps(output_dict, indent=4) + with open(f"{scriptpath}/{usersettingsfilename}", "w") as outputfile: + outputfile.write(json_dict) + print(old_port) + print(int(port.value)) + if old_port != int(port.value): + with ui.dialog() as dialog, ui.card(): + ui.markdown("Damit die Porteinstellungen wirksam werden, muss der Server neu gestartet werden.") + ui.button("OK", on_click=lambda: dialog.close()) + dialog.open() + ui.notify("Einstellungen gespeichert") + ui.markdown("Benutzername des Adminstrators") + admin_user = ui.input() + admin_user.value = data["admin_user"] + ui.markdown("Passwort des Adminsistrators") + admin_password = ui.input(password=True) + admin_password.value = data["admin_password"] - ui.label("Benutzername des Adminstrators") - admin_user = ui.input() - admin_user.value = data["admin_user"] - ui.label("Passwort des Adminsistrators") - admin_password = ui.input(password=True) - admin_password.value = data["admin_password"] - ui.button("Speichern", on_click=save_admin_settings) + secret = data["secret"] + + with ui.card(): + ui.markdown("**Systemeinstellungen:**") + with ui.grid(columns=2): + + ui.markdown("Port:") + port = ui.input() + old_port = data["port"] + port.value = old_port + ui.button("Speichern", on_click=save_admin_settings) with ui.tab_panel(users): ui.markdown("###Benutzerverwaltung") @@ -488,6 +508,12 @@ Dies kann nicht rückgägig gemacht werden!''') workhours_select.value = workhour_list[0] workinghourscard.visible = True + user_photo.set_source(current_user.photofile) + user_photo.force_reload() + + user_photo.set_visibility(os.path.exists(current_user.photofile)) + delete_button.set_visibility(os.path.exists(current_user.photofile)) + except: pass @@ -622,11 +648,33 @@ Dies kann nicht rückgägig gemacht werden!''') ui.markdown("Passwort") password_input = ui.input(password=True) - with ui.grid(columns=2): ui.button("Speichern", on_click=save_user_settings) ui.button("Löschen", on_click=del_user) + with ui.card() as photocard: + ui.markdown('**Foto**') + current_user = user(user_selection.value) + user_photo = ui.image(current_user.photofile) + + def handle_upload(e: events.UploadEventArguments): + picture = e.content.read() + current_user = user(user_selection.value) + with open(current_user.photofile, 'wb') as outoutfile: + outoutfile.write(picture) + uploader.reset() + user_selection_changed() + + + def del_photo(): + current_user = user(user_selection.value) + current_user.delete_photo() + user_selection_changed() + + uploader = ui.upload(label="Foto hochladen", on_upload=handle_upload).props('accept=.jpg|.jpeg').classes('max-w-full') + delete_button = ui.button("Löschen", on_click=del_photo) + + with ui.card() as workinghourscard: workhours = [] ui.markdown("**Arbeitszeiten**") diff --git a/main.py b/main.py index de351e1..d2d56cb 100644 --- a/main.py +++ b/main.py @@ -5,5 +5,21 @@ from admin import * from login import * from users import * from touchscreen import * +from definitions import * +import json -ui.run(port=8090, storage_secret="test") \ No newline at end of file + + +def main(): + + # Einstellungen einlesen + with open(f"{scriptpath}/settings.json") as json_file: + data = json.load(json_file) + + port = int(data["port"]) + secret = data["secret"] + + ui.run(port=port, storage_secret=secret) + +if __name__ in ("__main__", "__mp_main__"): + main() diff --git a/settings.json b/settings.json index 3b990e4..7f64e97 100644 --- a/settings.json +++ b/settings.json @@ -1,4 +1,6 @@ { - "admin_user": "admin", - "admin_password": "123456" + "admin_user": "admin", + "admin_password": "123456", + "port": "8090", + "secret": "ftgzuhjikg,mt5jn46uzer8sfi9okrmtzjhndfierko5zltjhdgise" } \ No newline at end of file diff --git a/users/testuser3/photo.jpg b/users/testuser3/photo.jpg new file mode 100644 index 0000000..c5003dc Binary files /dev/null and b/users/testuser3/photo.jpg differ