Merge branch 'qr_code' into web_ui
This commit is contained in:
commit
2dfef4da8c
29
admin.py
29
admin.py
@ -14,6 +14,7 @@ import os.path
|
|||||||
import hashlib
|
import hashlib
|
||||||
import calendar
|
import calendar
|
||||||
import locale
|
import locale
|
||||||
|
import segno
|
||||||
|
|
||||||
@ui.page('/admin')
|
@ui.page('/admin')
|
||||||
def page_admin():
|
def page_admin():
|
||||||
@ -758,9 +759,15 @@ def page_admin():
|
|||||||
|
|
||||||
api_link_column.clear()
|
api_link_column.clear()
|
||||||
for i in app.urls:
|
for i in app.urls:
|
||||||
link = ui.link(f'{i}/api/stamp/"API-Schlüssel"', f'{i}/api/stamp/{api_key_input.value}')
|
with ui.row() as link_row:
|
||||||
link.tooltip("ACHTUNG: Klick auf den Link löst Stempelaktion aus!")
|
link_string = f'{i}/api/stamp/{api_key_input.value}'
|
||||||
link.move(api_link_column)
|
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()
|
workhours_select.clear()
|
||||||
workhour_list = list(current_user.workhours)
|
workhour_list = list(current_user.workhours)
|
||||||
@ -808,6 +815,7 @@ def page_admin():
|
|||||||
user_selection.clear()
|
user_selection.clear()
|
||||||
user_selection.set_options(userlist)
|
user_selection.set_options(userlist)
|
||||||
user_selection.value = current_user.username
|
user_selection.value = current_user.username
|
||||||
|
user_selection_changed()
|
||||||
dialog.close()
|
dialog.close()
|
||||||
ui.notify("Einstellungen gespeichert")
|
ui.notify("Einstellungen gespeichert")
|
||||||
|
|
||||||
@ -927,33 +935,46 @@ def page_admin():
|
|||||||
user_ui()
|
user_ui()
|
||||||
|
|
||||||
with ui.column():
|
with ui.column():
|
||||||
|
@ui.refreshable
|
||||||
|
def usersettings_card():
|
||||||
|
global usersettingscard
|
||||||
with ui.card() as usersettingscard:
|
with ui.card() as usersettingscard:
|
||||||
ui.markdown("**Benutzereinstellungen**")
|
ui.markdown("**Benutzereinstellungen**")
|
||||||
with ui.grid(columns="auto 1fr") as usersettingsgrid:
|
with ui.grid(columns="auto 1fr") as usersettingsgrid:
|
||||||
|
|
||||||
ui.markdown("Benutzername:")
|
ui.markdown("Benutzername:")
|
||||||
|
global username_input
|
||||||
username_input = ui.input()
|
username_input = ui.input()
|
||||||
ui.markdown("Voller Name:")
|
ui.markdown("Voller Name:")
|
||||||
|
global fullname_input
|
||||||
fullname_input = ui.input()
|
fullname_input = ui.input()
|
||||||
ui.markdown("Passwort")
|
ui.markdown("Passwort")
|
||||||
|
global password_input
|
||||||
password_input = ui.input(password=True)
|
password_input = ui.input(password=True)
|
||||||
password_input.value = ""
|
password_input.value = ""
|
||||||
ui.markdown("API-Schlüssel:")
|
ui.markdown("API-Schlüssel:")
|
||||||
with ui.row():
|
with ui.row():
|
||||||
|
global api_key_input
|
||||||
api_key_input = ui.input().props('size=37')
|
api_key_input = ui.input().props('size=37')
|
||||||
def new_api_key():
|
def new_api_key():
|
||||||
api_key_input.value = hashlib.shake_256(bytes(f'{username_input.value}_{datetime.datetime.now().timestamp()}', 'utf-8')).hexdigest(20)
|
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.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:')
|
ui.markdown('Aufruf zum Stempeln:')
|
||||||
|
global api_link_column
|
||||||
with ui.column().classes('gap-0') as api_link_column:
|
with ui.column().classes('gap-0') as api_link_column:
|
||||||
|
global stamp_link
|
||||||
stamp_link = [ ]
|
stamp_link = [ ]
|
||||||
for i in app.urls:
|
for i in app.urls:
|
||||||
stamp_link.append(ui.link(f'{i}/api/stamp/"API-Schüssel"'))
|
stamp_link.append(ui.link(f'{i}/api/stamp/"API-Schüssel"'))
|
||||||
|
|
||||||
|
|
||||||
with ui.grid(columns=2):
|
with ui.grid(columns=2):
|
||||||
ui.button("Speichern", on_click=save_user_settings).tooltip("Klicken Sie hier um die Änderungen zu speichern.")
|
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("Löschen", on_click=del_user)
|
||||||
|
|
||||||
|
usersettings_card()
|
||||||
|
|
||||||
with ui.card() as photocard:
|
with ui.card() as photocard:
|
||||||
ui.markdown('**Foto**')
|
ui.markdown('**Foto**')
|
||||||
current_user = user(user_selection.value)
|
current_user = user(user_selection.value)
|
||||||
|
10
playgound.py
10
playgound.py
@ -1,8 +1,12 @@
|
|||||||
from nicegui import ui
|
from nicegui import ui
|
||||||
|
import segno
|
||||||
|
|
||||||
test = ('Eintrag 1')
|
string = ""
|
||||||
|
for i in range(1000):
|
||||||
|
string += str(i)
|
||||||
|
|
||||||
ui.markdown(test)
|
qr_code = segno.make_qr(string).svg_data_uri()
|
||||||
ui.markdown('Nächstes Element')
|
#qr_code.save("qr_code.png", scale=5, border=0)
|
||||||
|
ui.image(qr_code)
|
||||||
|
|
||||||
ui.run(language="de-DE", port=9000)
|
ui.run(language="de-DE", port=9000)
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"username": "testuser1",
|
"username": "testuser1",
|
||||||
"fullname": "Pia Paulina",
|
"fullname": "Pia Paulina",
|
||||||
"password": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
|
"password": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||||
"workhours": {
|
"workhours": {
|
||||||
"2025-05-13": {
|
"2025-05-13": {
|
||||||
"1": "4",
|
"1": "4",
|
||||||
@ -34,5 +34,5 @@
|
|||||||
"vacation": "30"
|
"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