from datetime import timedelta from datetime import date from umlauts import escape_german_umlauts dates_color = { "birthdays": "green!50!black", "specialdays": "green!50!white", "freedays": "red!50!white", "holidays": "blue!50!green", } dates = { "birthdays": [ { "date": "13.01", "title": "Astrid Schönberger" }, { "date": "23.01", "title": "David Geiser" }, { "date": "27.09", "title": "Monika Voigt"}, { "date": "05.10", "title": "Franziska Geiser"}, { "date": "18.10", "title": "Theresa Schönberger" }, { "date": "13.11", "title": "Winfried Voigt"}, { "date": "14.11", "title": "Philipp Schönberer" }, { "date": "18.12", "title": "Ursula Donn"}, { "date": "12.05", "title": "Felix Maximilian Schönberger"}, ], "specialdays": [ { "date": "05.10", "title": "Obermegaknutztag" }, { "date": "10.05", "title": "Hochzeitstag" }, ], "holidays": [ { "date-start": "23.12.2019", "date-end": "04.01.2020", "title": "Weihnachtsferien" }, #ferien 2020 bw { "date-start": "06.04.2020", "date-end": "18.04.2020", "title": "Osterferien" }, { "date-start": "02.06.2020", "date-end": "13.06.2020", "title": "Pfingstferien"}, { "date-start": "30.07.2020", "date-end": "12.09.2020", "title": "Sommerferien"}, { "date-start": "26.10.2020", "date-end": "30.10.2020", "title": "Herbstferien"}, { "date-start": "23.12.2020", "date-end": "09.01.2021", "title": "Weihnachtsferien"}, #ferien 2021 bw { "date-start": "06.04.2021", "date-end": "10.04.2021", "title": "Osterferien" }, { "date-start": "25.05.2021", "date-end": "06.06.2021", "title": "Pfingstferien"}, { "date-start": "29.07.2021", "date-end": "12.09.2021", "title": "Sommerferien"}, { "date-start": "30.10.2021", "date-end": "07.11.2021", "title": "Herbstferien"}, { "date-start": "23.12.2021", "date-end": "09.01.2022", "title": "Weihnachtsferien"}, #ferien 2022 bw { "date-start": "14.04.2022", "date-end": "23.04.2022", "title": "Osterferien" }, { "date-start": "07.06.2022", "date-end": "18.06.2022", "title": "Pfingstferien"}, { "date-start": "28.07.2022", "date-end": "10.09.2022", "title": "Sommerferien"}, { "date-start": "31.10.2022", "date-end": "04.11.2022", "title": "Herbstferien"}, { "date-start": "21.12.2022", "date-end": "07.01.2022", "title": "Weihnachtsferien"}, #ferien 2023 bw { "date-start": "06.04.2022", "date-end": "15.04.2022", "title": "Osterferien" }, { "date-start": "30.05.2022", "date-end": "09.06.2022", "title": "Pfingstferien"}, { "date-start": "27.07.2022", "date-end": "09.09.2022", "title": "Sommerferien"}, { "date-start": "30.10.2022", "date-end": "03.11.2022", "title": "Herbstferien"}, { "date-start": "23.12.2022", "date-end": "05.01.2022", "title": "Weihnachtsferien"}, ], "freedays": [ { "date": "01.01", "title": "Neujahr" }, { "date": "06.01", "title": "Heilige Drei Könige" }, { "date": "01.05", "title": "Tag der Arbeit" }, { "date": "03.10", "title": "Tag der Deutschen Einheit"}, { "date": "01.11", "title": "Allerheiligen" }, { "date": "24.12", "title": "Weihnachtten" }, { "date": "25.12", "title": "1. Weihnachtsfeiertag" }, { "date": "26.12", "title": "2. Weihnachtsfeiertag" }, { "date": "31.12", "title": "Silvester" }, #free 2021 bw { "date": "02.04.2021", "title": "Karfreitag" }, { "date": "05.04.2021", "title": "Ostermontag" }, { "date": "13.05.2021", "title": "Christi Himmelfahrt" }, { "date": "24.05.2021", "title": "Pfingstmontag" }, { "date": "03.06.2021", "title": "Fronleichnam" }, #free 2022 bw { "date": "15.04.2022", "title": "Karfreitag" }, { "date": "18.04.2022", "title": "Ostermontag" }, { "date": "26.05.2022", "title": "Christi Himmelfahrt" }, { "date": "06.06.2022", "title": "Pfingstmontag" }, { "date": "16.06.2022", "title": "Fronleichnam" }, #free 2023 bw { "date": "07.04.2022", "title": "Karfreitag" }, { "date": "10.04.2022", "title": "Ostermontag" }, { "date": "18.05.2022", "title": "Christi Himmelfahrt" }, { "date": "29.05.2022", "title": "Pfingstmontag" }, { "date": "08.06.2022", "title": "Fronleichnam" }, ], } def get_special_text(date_to_check, divider): return_str ="" for b in dates: print(b) for d in dates[b]: if "date" in d: start_day = d["date"].split(".") if len(start_day)<3: s_year = date_to_check.year else: s_year = int(start_day[2]) s_month = int(start_day[1]) s_day = int(start_day[0]) start_day = date(s_year, s_month, s_day) if (start_day == date_to_check): if return_str != "": return_str += divider return_str += "\\textcolor{"+dates_color[b]+"}{" + d["title"] + "}" if "date-start" in d and "date-end" in d: start_day = d["date-start"].split(".") if len(start_day)<3: s_year = date_to_check.year else: s_year = int(start_day[2]) s_month = int(start_day[1]) s_day = int(start_day[0]) start_day = date(s_year, s_month, s_day) end_day = d["date-end"].split(".") if len(end_day)<3: e_year = date_to_check.year else: e_year = int(end_day[2]) e_month = int(end_day[1]) e_day = int(end_day[0]) end_day = date(e_year, e_month, e_day) if date_to_check >= start_day and date_to_check <= end_day: if return_str != "": return_str += divider return_str += "\\textcolor{"+dates_color[b]+"}{" + d["title"] + "}" return_str = escape_german_umlauts(return_str) return return_str