diff --git a/admin.py b/admin.py index f6567d1..1d7dbd6 100644 --- a/admin.py +++ b/admin.py @@ -42,6 +42,14 @@ def page_admin(): settings = ui.tab('Einstellungen') users = ui.tab('Benutzer') + userlist = [ ] + + def update_userlist(): + nonlocal userlist + userlist = list_users() + + update_userlist() + with (((ui.tab_panels(tabs, value=time_overview)))): with ui.tab_panel(time_overview): @@ -84,7 +92,6 @@ def page_admin(): except NameError: pass - userlist = list_users() ui.markdown("Benutzer:") time_user = ui.select(options=userlist, on_change=update_user) @@ -204,7 +211,7 @@ def page_admin(): with ui.dialog() as dialog, ui.card(): ui.markdown(f'''Soll der Eintrag **{absence_type}** für den **{day}. {calendar.month_name[int(select_month.value)]} {select_year.value}** gelöscht werden? - Dies kann nicht rückgägig gemacht werden!''') +Dies kann nicht rückgägig gemacht werden!''') with ui.grid(columns=3): ui.button("Ja", on_click=execute_deletion) ui.space() @@ -531,6 +538,7 @@ def page_admin(): ui.button("OK", on_click=lambda: dialog.close()) dialog.open() ui.notify("Einstellungen gespeichert") + timetable.refresh() ui.markdown("Benutzername des Adminstrators") admin_user = ui.input() @@ -553,6 +561,9 @@ def page_admin(): with ui.card(): ui.markdown('**Feiertage:**') + reset_visibility = ValueBinder() + reset_visibility.value = False + def new_holiday_entry(): def add_holiday_to_dict(): year_from_picker = int(datepicker.value.split("-")[0]) @@ -562,8 +573,8 @@ def page_admin(): repetition_date_dt = datetime.datetime(year_from_picker + i, month_from_picker, day_from_picker) date_entry = repetition_date_dt.strftime('%Y-%m-%d') data["holidays"][date_entry] = description.value - print(data['holidays']) holiday_buttons_grid.refresh() + reset_visibility.value = True dialog.close() with ui.dialog() as dialog, ui.card(): @@ -607,6 +618,7 @@ def page_admin(): def del_holiday_entry(entry): del(data['holidays'][entry.strftime('%Y-%m-%d')]) + reset_visibility.value = True holiday_buttons_grid.refresh() def defined_holidays(): @@ -620,7 +632,7 @@ def page_admin(): new_year = ui.checkbox("Neujahr (1. Januar)").classes(checkbox_classes) heilige_drei_koenige = ui.checkbox("Heilige Drei Könige (6. Januar)").classes(checkbox_classes) womens_day = ui.checkbox("Internationaler Frauentag (8. März)").classes(checkbox_classes) - gruendonnerstag = ui.checkbox("Gründonnerstag (berechnet").classes(checkbox_classes) + gruendonnerstag = ui.checkbox("Gründonnerstag (berechnet)").classes(checkbox_classes) karfreitag = ui.checkbox("Karfreitag (berechnet").classes(checkbox_classes) easter_sunday = ui.checkbox("Ostersonntag (berechnet)").classes(checkbox_classes) easter_monday = ui.checkbox("Ostermontag (berechnet)").classes(checkbox_classes) @@ -667,7 +679,7 @@ def page_admin(): datum = datum_dt.strftime("%Y-%m-%d") data["holidays"][f"{datum}"] = "Ostermontag" if first_of_may.value: - data["holidays"][f"{year}-05-01"] = f"Tage der Arbeit" + data["holidays"][f"{year}-05-01"] = f"Tag der Arbeit" if liberation_day.value: data["holidays"][f"{year}-05-08"] = f"Tag der Befreiung" if ascension_day.value: @@ -711,6 +723,7 @@ def page_admin(): data["holidays"][f"{year}-12-25"] = f"1. Weihnachtsfeiertag" if boxing_day.value: data["holidays"][f"{year}-12-26"] = f"2. Weihnachtsfeiertag" + reset_visibility.value = True dialog.close() holiday_buttons_grid.refresh() @@ -722,11 +735,19 @@ def page_admin(): ui.button("Abbrechen", on_click=dialog.close) dialog.open() + def reset_holidays(): + old_data = load_adminsettings() + data["holidays"] = old_data["holidays"] + reset_visibility.value = False + holiday_buttons_grid.refresh() + with ui.grid(columns='auto auto'): ui.space() with ui.row(): ui.button("Gesetzliche Feiertage eintragen", on_click=defined_holidays) ui.button("Eigener Eintrag", on_click=new_holiday_entry) + ui.button("Zurücksetzen", icon="undo", on_click=reset_holidays).bind_visibility_from(reset_visibility, 'value').classes('bg-red') + ui.separator().classes('col-span-2') for year_entry in year_list: ui.markdown(f"{str(year_entry)}:") @@ -833,12 +854,19 @@ def page_admin(): current_user = user(user_selection.value) def del_definitely(): + if current_user.username == time_user.value: + if userlist.index(current_user.username) == 0: + time_user.value = userlist[1] + else: + time_user.value = userlist[0] current_user.del_user() #userlist = list_users() #userlist.sort() #user_selection.clear() #user_selection.set_options(userlist) #user_selection.value = userlist[0] + update_userlist() + time_user.set_options(userlist) user_ui.refresh() dialog.close() ui.notify("Benutzer gelöscht") @@ -907,7 +935,8 @@ def page_admin(): if user_name_input.validate(): print(user_name_input.value) new_user(user_name_input.value) - userlist = list_users() + update_userlist() + time_user.set_options(userlist) user_ui.refresh() dialog.close() else: diff --git a/definitions.py b/definitions.py index e92f79c..83260ad 100644 --- a/definitions.py +++ b/definitions.py @@ -58,5 +58,8 @@ absence_entries = {"U": { "name": "Urlaub", "text-color": "white"}, "EZ": { "name": "Elternzeit", "color": "purple", + "text-color": "white"}, + "SO": { "name": "Sonstiges", + "color": "pink", "text-color": "white"} } diff --git a/settings.json b/settings.json index b4e0b21..2add415 100644 --- a/settings.json +++ b/settings.json @@ -3,5 +3,66 @@ "admin_password": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918", "port": "8090", "secret": "ftgzuhjikg,mt5jn46uzer8sfi9okrmtzjhndfierko5zltjhdgise", - "holidays": {} + "holidays": { + "2025-01-01": "Neujahr", + "2025-04-18": "Karfreitag", + "2025-04-21": "Ostermontag", + "2025-05-01": "Tag der Arbeit", + "2025-05-29": "Christi Himmelfahrt", + "2025-06-08": "Pfingstmontag", + "2025-10-03": "Tag der deutschen Einheit", + "2025-10-30": "Reformationstag", + "2025-12-25": "1. Weihnachtsfeiertag", + "2025-12-26": "2. Weihnachtsfeiertag", + "2026-01-01": "Neujahr", + "2026-04-03": "Karfreitag", + "2026-04-06": "Ostermontag", + "2026-05-01": "Tag der Arbeit", + "2026-05-14": "Christi Himmelfahrt", + "2026-05-24": "Pfingstmontag", + "2026-10-03": "Tag der deutschen Einheit", + "2026-10-30": "Reformationstag", + "2026-12-25": "1. Weihnachtsfeiertag", + "2026-12-26": "2. Weihnachtsfeiertag", + "2027-01-01": "Neujahr", + "2027-03-26": "Karfreitag", + "2027-03-29": "Ostermontag", + "2027-05-01": "Tag der Arbeit", + "2027-05-06": "Christi Himmelfahrt", + "2027-05-16": "Pfingstmontag", + "2027-10-03": "Tag der deutschen Einheit", + "2027-10-30": "Reformationstag", + "2027-12-25": "1. Weihnachtsfeiertag", + "2027-12-26": "2. Weihnachtsfeiertag", + "2028-01-01": "Neujahr", + "2028-04-14": "Karfreitag", + "2028-04-17": "Ostermontag", + "2028-05-01": "Tag der Arbeit", + "2028-05-25": "Christi Himmelfahrt", + "2028-06-04": "Pfingstmontag", + "2028-10-03": "Tag der deutschen Einheit", + "2028-10-30": "Reformationstag", + "2028-12-25": "1. Weihnachtsfeiertag", + "2028-12-26": "2. Weihnachtsfeiertag", + "2029-01-01": "Neujahr", + "2029-03-30": "Karfreitag", + "2029-04-02": "Ostermontag", + "2029-05-01": "Tag der Arbeit", + "2029-05-10": "Christi Himmelfahrt", + "2029-05-20": "Pfingstmontag", + "2029-10-03": "Tag der deutschen Einheit", + "2029-10-30": "Reformationstag", + "2029-12-25": "1. Weihnachtsfeiertag", + "2029-12-26": "2. Weihnachtsfeiertag", + "2030-01-01": "Neujahr", + "2030-04-19": "Karfreitag", + "2030-04-22": "Ostermontag", + "2030-05-01": "Tage der Arbeit", + "2030-05-30": "Christi Himmelfahrt", + "2030-06-09": "Pfingstmontag", + "2030-10-03": "Tag der deutschen Einheit", + "2030-10-30": "Reformationstag", + "2030-12-25": "1. Weihnachtsfeiertag", + "2030-12-26": "2. Weihnachtsfeiertag" + } } \ No newline at end of file diff --git a/users/testuser1/2025-5.json b/users/testuser1/2025-5.json index 813396e..c970b2a 100644 --- a/users/testuser1/2025-5.json +++ b/users/testuser1/2025-5.json @@ -2,6 +2,7 @@ "archived": 0, "overtime": 0, "absence": { - "14": "U" + "14": "U", + "2": "SO" } } \ No newline at end of file diff --git a/users/testuser99/settings.json b/users/testuser99/settings.json deleted file mode 100644 index c9e9caf..0000000 --- a/users/testuser99/settings.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "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 - } - } -} \ No newline at end of file