Vielen Dank für die Umsetzung von #28 mit #32! 🎉 🚀 Ich hatte mir den Code zuvor nicht näher angesehen, dachte das sei eine eher kleine Änderung, war dann aber offensichtlich doch deutlich mehr Arbeit als gedacht - dafür nochmal ein extra Dankeschön! ❤️
Einen optionalen Aspekt von #28 möchte ich gerne nochmal kurz fürs Ortsfeld und die Beschreibung vorschlagen:
Die absolute Premium-Lösung wäre wenn dann noch eine kleine Prüflogik für "Alle Bundesländer" und "Alle Bundesländer außer <bis zu 5 Länder>" existieren würde, die dafür sorgt, dass bei (nahezu) bundesweiten Feiertagen nicht immer (fast) alle Bundesländer aufgezählt werden.
Für die Basisvariante dürfte es reichen die folgenden beiden Codezeilen auch in die build_location Methode fürs Ortsfeld einzubauen, nicht nur in build_description für die Beschreibung:
|
if set(ordered_codes) == ALL_STATE_CODES: |
|
return "Gilt in allen Bundesländern." |
Für die Premiumvariante könnte man den Codepfad auch in eine kleine Helper-Methode auslagern, die die oben erwähnte Prüflogik für "Alle Bundesländer außer <bis zu 5 Länder>" realisiert. Hier ein kleines PoC (ungetestet):
def _excluded_state_codes(state_codes: list[str]) -> list[str] | None:
excluded_codes = ALL_STATE_CODES - set(state_codes)
return list(excluded_codes) if len(excluded_codes) <= 5 else None
def build_description(state_codes: list[str], own_state_code: str | None = None) -> str:
excluded_codes = _excluded_state_codes(state_codes)
if excluded_codes is not None:
if not excluded_codes:
return "Gilt in allen Bundesländern."
excluded_names = [STATE_NAME_BY_CODE[code] for code in excluded_codes]
return "\n".join(["Gilt in allen Bundesländern außer:"] + [f"- {state_name}" for state_name in excluded_names])
ordered_codes = ordered_state_codes(state_codes, own_state_code=own_state_code)
state_names = [STATE_NAME_BY_CODE[code] for code in ordered_codes]
return "\n".join(["Gilt in:"] + [f"- {state_name}" for state_name in state_names])
def build_location(state_codes: list[str], own_state_code: str | None = None) -> str:
excluded_codes = _excluded_state_codes(state_codes)
if excluded_codes is not None:
return "Alle Bundesländer" + ("" if not excluded_codes else " außer " + ", ".join(excluded_codes))
ordered_codes = ordered_state_codes(state_codes, own_state_code=own_state_code)
return ", ".join(ordered_codes)
Falls du das nicht für sinnvoll hältst: No hard feelings, danke nochmal!
Vielen Dank für die Umsetzung von #28 mit #32! 🎉 🚀 Ich hatte mir den Code zuvor nicht näher angesehen, dachte das sei eine eher kleine Änderung, war dann aber offensichtlich doch deutlich mehr Arbeit als gedacht - dafür nochmal ein extra Dankeschön! ❤️
Einen optionalen Aspekt von #28 möchte ich gerne nochmal kurz fürs Ortsfeld und die Beschreibung vorschlagen:
Für die Basisvariante dürfte es reichen die folgenden beiden Codezeilen auch in die
build_locationMethode fürs Ortsfeld einzubauen, nicht nur inbuild_descriptionfür die Beschreibung:ics.tools/scripts/03_generate_public_holidays_ics.py
Lines 64 to 65 in 5a57c0c
Für die Premiumvariante könnte man den Codepfad auch in eine kleine Helper-Methode auslagern, die die oben erwähnte Prüflogik für "Alle Bundesländer außer <bis zu 5 Länder>" realisiert. Hier ein kleines PoC (ungetestet):
Falls du das nicht für sinnvoll hältst: No hard feelings, danke nochmal!