Erweiterung Admin-Seite

Tabs eingeführt
Grundlagendesign Benutzerverwalltung
This commit is contained in:
Alexander Malzkuhn 2025-04-20 22:33:20 +02:00
parent 98ed925cde
commit aecb86f278
5 changed files with 110 additions and 17 deletions

View File

@ -29,6 +29,7 @@ class user:
self.fullname = data["name"]
self.password = data["password"]
self.workhours = data["workhours"]
self.username = data["username"]
def get_stamp_file(self):
year = str(datetime.datetime.now().year)

View File

@ -2,3 +2,11 @@
1744989837
1744989913
1744989917
1744991287
1744991291
1744991475
1744991478
1744991773
1744991776
1744991910
1744991912

View File

@ -14,3 +14,13 @@
1744989909
1744989914
1744989916
1744991169
1744991171
1744991288
1744991291
1744991473
1744991477
1744991770
1744991777
1745181046
1745181050

View File

@ -6,3 +6,7 @@
1744989907
1744989915
1744989916
1744991290
1744991291
1745004502
1745004504

104
web_ui.py
View File

@ -3,6 +3,13 @@ from users import *
from definitions import *
import hashlib
class pageheader:
def __init__(self, heading):
self.heading = heading
ui.markdown(f"##{app_title} {app_version}")
ui.markdown(f"###{self.heading}")
def cookie_hash(user, password):
return hashlib.sha256(b"{user}{app.storage.user['id']}{password}").hexdigest()
@ -33,8 +40,11 @@ def page_login():
else:
ui.notify("Login fehlgeschlagen")
ui.markdown(f"## {app_title} {app_version}")
ui.markdown("Bitte einloggen")
#ui.markdown(f"## {app_title} {app_version}")
#ui.markdown("Bitte einloggen")
pageheader("Bitte einloggen:")
with ui.grid(columns=2):
ui.markdown("Benutzer:")
username = ui.input('Benutzername')
@ -53,22 +63,82 @@ def page_admin():
# Adminseite
if browser_cookie == active_login:
ui.markdown(f"##{app_title} {app_version}")
ui.markdown("###Administrator Benutzer")
with ui.grid(columns=2):
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"]
pageheader("Administration")
ui.markdown("###Benutzerverwaltung")
userlist = list_users()
with ui.grid(columns=2):
for name in userlist:
ui.label(name)
ui.button("Löschen")
with ui.tabs() as tabs:
admin_user = ui.tab('Admin Benutzer')
users = ui.tab('Benutzer')
settings = ui.tab('Einstellungen')
with ui.tab_panels(tabs, value=admin_user):
with ui.tab_panel(admin_user):
with ui.grid(columns=2):
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"]
with ui.tab_panel(users):
ui.markdown("###Benutzerverwaltung")
userlist = list_users()
workhours = [ ]
with ui.row():
def user_selection_changed(value):
current_user = user(value)
username_input.value = current_user.username
fullname_input.value = current_user.fullname
password_input.value = current_user.password
usersettingscard.visible = True
workhours_select.set_options(list(current_user.workhours))
workhours_select.value = list(current_user.workhours)[0]
workinghourscard.visible = True
with ui.column():
ui.select(options=userlist, with_input=True, on_change=lambda e: user_selection_changed(e.value))
ui.button("Neu")
with ui.column():
with ui.card() as usersettingscard:
ui.markdown("**Benutzereisntellungen**")
with ui.grid(columns=2):
ui.label("Benutzername:")
username_input = ui.input()
ui.label("Voller Name:")
fullname_input = ui.input()
ui.label("Passwort")
password_input = ui.input(password=True)
with ui.row():
ui.button("Speichern")
ui.button("Löschen")
with ui.card() as workinghourscard:
workhours = [ ]
ui.markdown("**Arbeitszeiten**")
with ui.grid(columns=2):
ui.markdown("gültig ab:")
workhours_select = ui.select(options=workhours)
days = [ ]
weekdays = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
counter = 0
for day in weekdays:
ui.markdown(day)
days.append(ui.input())
counter = counter + 1
ui.separator()
with ui.grid(columns=2):
ui.markdown("Urlaubstage")
vacation_input = ui.input()
with ui.row():
ui.button("Speichern")
ui.button("Löschen")
ui.button("Neu")
# Initial das Benutzerfeld unsichtbar machen
usersettingscard.visible = False
workinghourscard.visible = False
# Alternativ zur Loginseite navigieren
else: