QR-Codes hinzugefügt

This commit is contained in:
Alexander Malzkuhn 2025-05-08 11:16:39 +02:00
parent d740b8e2b6
commit 6e131f9d7d
4 changed files with 75 additions and 32 deletions

View File

@ -14,6 +14,7 @@ import os.path
import hashlib
import calendar
import locale
import segno
@ui.page('/admin')
def page_admin():
@ -758,9 +759,15 @@ def page_admin():
api_link_column.clear()
for i in app.urls:
link = ui.link(f'{i}/api/stamp/"API-Schlüssel"', f'{i}/api/stamp/{api_key_input.value}')
link.tooltip("ACHTUNG: Klick auf den Link löst Stempelaktion aus!")
link.move(api_link_column)
with ui.row() as link_row:
link_string = f'{i}/api/stamp/{api_key_input.value}'
link = ui.link(f'{i}/api/stamp/"API-Schlüssel"', link_string).tooltip(("ACHTUNG: Klick auf den Link löst Stempelaktion aus!"))
qr = segno.make_qr(link_string).svg_data_uri()
with ui.image(qr).classes('w-1/3'):
with ui.tooltip().classes('bg-white border'):
ui.image(qr).classes('w-64')
link_row.move(api_link_column)
workhours_select.clear()
workhour_list = list(current_user.workhours)
@ -808,6 +815,7 @@ def page_admin():
user_selection.clear()
user_selection.set_options(userlist)
user_selection.value = current_user.username
user_selection_changed()
dialog.close()
ui.notify("Einstellungen gespeichert")
@ -927,32 +935,45 @@ def page_admin():
user_ui()
with ui.column():
with ui.card() as usersettingscard:
ui.markdown("**Benutzereinstellungen**")
with ui.grid(columns="auto 1fr") as usersettingsgrid:
@ui.refreshable
def usersettings_card():
global usersettingscard
with ui.card() as usersettingscard:
ui.markdown("**Benutzereinstellungen**")
with ui.grid(columns="auto 1fr") as usersettingsgrid:
ui.markdown("Benutzername:")
username_input = ui.input()
ui.markdown("Voller Name:")
fullname_input = ui.input()
ui.markdown("Passwort")
password_input = ui.input(password=True)
password_input.value = ""
ui.markdown("API-Schlüssel:")
with ui.row():
api_key_input = ui.input().props('size=37')
def new_api_key():
api_key_input.value = hashlib.shake_256(bytes(f'{username_input.value}_{datetime.datetime.now().timestamp()}', 'utf-8')).hexdigest(20)
ui.button("Neu", on_click=new_api_key)
ui.markdown('Aufruf zum Stempeln:')
with ui.column().classes('gap-0') as api_link_column:
stamp_link = [ ]
for i in app.urls:
stamp_link.append(ui.link(f'{i}/api/stamp/"API-Schüssel"'))
ui.markdown("Benutzername:")
global username_input
username_input = ui.input()
ui.markdown("Voller Name:")
global fullname_input
fullname_input = ui.input()
ui.markdown("Passwort")
global password_input
password_input = ui.input(password=True)
password_input.value = ""
ui.markdown("API-Schlüssel:")
with ui.row():
global api_key_input
api_key_input = ui.input().props('size=37')
def new_api_key():
api_key_input.value = hashlib.shake_256(bytes(f'{username_input.value}_{datetime.datetime.now().timestamp()}', 'utf-8')).hexdigest(20)
with ui.grid(columns=2):
ui.button("Speichern", on_click=save_user_settings).tooltip("Klicken Sie hier um die Änderungen zu speichern.")
ui.button("Löschen", on_click=del_user)
ui.button("Neu", on_click=new_api_key).tooltip("Neuen API-Schlüssel erzeugen. Wird erst beim Klick auf Speichern übernommen und entsprechende Links und QR-Codes aktualisiert")
ui.markdown('Aufruf zum Stempeln:')
global api_link_column
with ui.column().classes('gap-0') as api_link_column:
global stamp_link
stamp_link = [ ]
for i in app.urls:
stamp_link.append(ui.link(f'{i}/api/stamp/"API-Schüssel"'))
with ui.grid(columns=2):
ui.button("Speichern", on_click=save_user_settings).tooltip("Klicken Sie hier um die Änderungen zu speichern.")
ui.button("Löschen", on_click=del_user)
usersettings_card()
with ui.card() as photocard:
ui.markdown('**Foto**')

View File

@ -1,8 +1,12 @@
from nicegui import ui
import segno
test = ('Eintrag 1')
string = ""
for i in range(1000):
string += str(i)
ui.markdown(test)
ui.markdown('Nächstes Element')
qr_code = segno.make_qr(string).svg_data_uri()
#qr_code.save("qr_code.png", scale=5, border=0)
ui.image(qr_code)
ui.run(language="de-DE", port=9000)

View File

@ -1,7 +1,7 @@
{
"username": "testuser1",
"fullname": "Pia Paulina",
"password": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"password": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"workhours": {
"2025-05-13": {
"1": "4",
@ -34,5 +34,5 @@
"vacation": "30"
}
},
"api_key": "de4403f629a30450b2df1aa619a1c06112035499"
"api_key": "0d8b1baf9219fe568c0f0ea7c4244927e1c901da"
}

View File

@ -0,0 +1,18 @@
{
"username": "testuser99",
"fullname": "testuser99",
"password": "37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f",
"api_key": "d0c28e4b8dff9685e774e6e2e6bcea6b746d34af",
"workhours": {
"2025-05-08": {
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"vacation": 0
}
}
}