From 3e3537c8b88175177f27049e87972fad4c575ad8 Mon Sep 17 00:00:00 2001 From: Alexander Malzkuhn Date: Tue, 29 Apr 2025 10:55:21 +0200 Subject: [PATCH] =?UTF-8?q?Urlaubs=C3=BCbersicht=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 45 ++++++++++++++++++++++++++++++++++++++++++++- main.py | 2 -- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/api.py b/api.py index 706ceb1..b48315a 100644 --- a/api.py +++ b/api.py @@ -15,7 +15,7 @@ import calendar # Überblicksseite zum Ausdrucken oder als PDF speichern @ui.page('/api/overview/month/{username}/{year}-{month}') -def page(username: str, year: int, month: int): +def page_overview_month(username: str, year: int, month: int): try: current_user = user(username) @@ -215,6 +215,49 @@ def page(username: str, year: int, month: int): absence_table() + except Exception as e: + print(str(type(e).__name__) + " " + str(e)) + if type(e) == UnboundLocalError: + ui.markdown('#Fehler') + ui.markdown('Benutzer existiert nicht') + else: + ui.markdown('#Fehler') + ui.markdown(str(type(e))) + ui.markdown(str(e)) + +@ui.page('/api/overview/vacation/{username}/{year}-{month}-{day}') +def page_overview_vacation(username: str, year: int, month: int, day: int): + try: + current_user = user(username) + + ui.page_title(f"Urlaubsanspruch für {current_user.fullname} für {year}") + ui.label(datetime.now().strftime('%d.%m.%Y')).classes('absolute top-5 right-5') + ui.space() + ui.markdown(f'#Urlaubsanspruch für {current_user.fullname} für {year}') + + pad_x = 4 + pad_y = 0 + + with ui.grid(columns='auto auto').classes(f'gap-0 border px-0 py-0'): + ui.markdown(f"Urlaubsübersicht für {year}:").classes(f'border px-{pad_x} py-{pad_y}') + vacationclaim = int(current_user.get_vacation_claim(year, month, day)) + ui.markdown(f"{vacationclaim} Tage").classes(f'text-right border px-{pad_x} py-{pad_y}') + ui.markdown("Registrierte Urlaubstage").classes(f'border px-{pad_x} py-{pad_y} col-span-2') + vacation_counter = 0 + try: + for i in range(1, 13): + absence_entries = current_user.get_absence(year, i) + for day, absence_type in absence_entries.items(): + print(day + "." + str(i) + " " + absence_type) + if absence_type == "U": + day_in_list = datetime(int(year), int(i), int(day)).strftime("%d.%m.%Y") + ui.markdown(day_in_list).classes(f'border px-{pad_x} py-{pad_y}') + ui.markdown("-1 Tag").classes(f'border px-{pad_x} py-{pad_y} text-center') + vacation_counter += 1 + except Exception as e: + print(str(type(e).__name__) + " " + str(e)) + ui.markdown("**Resturlaub:**").classes(f'border px-{pad_x} py-{pad_y}') + ui.markdown(f'**{str(vacationclaim - vacation_counter)} Tage**').classes(f'border px-{pad_x} py-{pad_y} text-center') except Exception as e: print(str(type(e).__name__) + " " + str(e)) if type(e) == UnboundLocalError: diff --git a/main.py b/main.py index d2201b0..cd71488 100644 --- a/main.py +++ b/main.py @@ -10,8 +10,6 @@ from api import * import json - - def main(): # Einstellungen einlesen