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.fullname = data["name"]
self.password = data["password"] self.password = data["password"]
self.workhours = data["workhours"] self.workhours = data["workhours"]
self.username = data["username"]
def get_stamp_file(self): def get_stamp_file(self):
year = str(datetime.datetime.now().year) year = str(datetime.datetime.now().year)

View File

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

View File

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

View File

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

104
web_ui.py
View File

@ -3,6 +3,13 @@ from users import *
from definitions import * from definitions import *
import hashlib 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): def cookie_hash(user, password):
return hashlib.sha256(b"{user}{app.storage.user['id']}{password}").hexdigest() return hashlib.sha256(b"{user}{app.storage.user['id']}{password}").hexdigest()
@ -33,8 +40,11 @@ def page_login():
else: else:
ui.notify("Login fehlgeschlagen") ui.notify("Login fehlgeschlagen")
ui.markdown(f"## {app_title} {app_version}") #ui.markdown(f"## {app_title} {app_version}")
ui.markdown("Bitte einloggen") #ui.markdown("Bitte einloggen")
pageheader("Bitte einloggen:")
with ui.grid(columns=2): with ui.grid(columns=2):
ui.markdown("Benutzer:") ui.markdown("Benutzer:")
username = ui.input('Benutzername') username = ui.input('Benutzername')
@ -53,22 +63,82 @@ def page_admin():
# Adminseite # Adminseite
if browser_cookie == active_login: if browser_cookie == active_login:
ui.markdown(f"##{app_title} {app_version}") pageheader("Administration")
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"]
ui.markdown("###Benutzerverwaltung") with ui.tabs() as tabs:
userlist = list_users() admin_user = ui.tab('Admin Benutzer')
with ui.grid(columns=2): users = ui.tab('Benutzer')
for name in userlist: settings = ui.tab('Einstellungen')
ui.label(name)
ui.button("Löschen") 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 # Alternativ zur Loginseite navigieren
else: else: