Merge branch 'qr_code' into web_ui
This commit is contained in:
commit
2dfef4da8c
75
admin.py
75
admin.py
@ -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**')
|
||||
|
10
playgound.py
10
playgound.py
@ -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)
|
@ -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"
|
||||
}
|
18
users/testuser99/settings.json
Normal file
18
users/testuser99/settings.json
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user