diff options
| author | Valentin <valentin@fricklerhandwerk.de> | 2026-06-07 11:45:00 +0200 |
|---|---|---|
| committer | Valentin <valentin@fricklerhandwerk.de> | 2026-06-07 11:45:00 +0200 |
| commit | 2a94ed352e1a5fdeb0fdba9a5e7ea8aa8f35f027 (patch) | |
| tree | 9b855803f1c2c4f311f13b5df67749375bfbbc74 | |
| parent | 09fc28b167b135dbc874ea8f4450df432156db6b (diff) | |
Adressvererbung zwischen Terminen über Veranstaltungsort-Kennzeichen
| -rw-r--r-- | www/framework/default.nix | 7 | ||||
| -rw-r--r-- | www/framework/event.nix | 45 | ||||
| -rw-r--r-- | www/termine/2025-11-low-budget-poetry-slam.nix | 1 | ||||
| -rw-r--r-- | www/termine/2026-03-low-budget-poetry-slam.nix | 9 | ||||
| -rw-r--r-- | www/termine/2026-05-low-budget-poetry-slam.nix | 9 | ||||
| -rw-r--r-- | www/termine/2026-09-low-budget-poetry-slam.nix | 9 | ||||
| -rw-r--r-- | www/termine/2026-11-low-budget-poetry-slam.nix | 9 |
7 files changed, 54 insertions, 35 deletions
diff --git a/www/framework/default.nix b/www/framework/default.nix index 71d3c98..91b21a4 100644 --- a/www/framework/default.nix +++ b/www/framework/default.nix @@ -45,7 +45,12 @@ in description = '' Termine ''; - type = with types; attrsOf (submodule config.types.event); + type = + with types; + attrsOf (submodule [ + config.types.event + { _module.args.events = config.events; } + ]); default = { }; }; diff --git a/www/framework/event.nix b/www/framework/event.nix index 7dea810..2daa4a2 100644 --- a/www/framework/event.nix +++ b/www/framework/event.nix @@ -1,9 +1,23 @@ { config, ... }: { config.types.event = - event@{ lib, ... }: + event@{ lib, events, ... }: let inherit (lib) mkOption types; + cfg = event.config; + sort-key = e: "${e.date.start} ${e.time.start}"; + prior = + let + candidates = lib.filter ( + e: + e.venue != null && e.venue == cfg.venue && sort-key e < sort-key cfg && !e.address.once + ) (lib.attrValues events); + sorted = lib.sortOn sort-key candidates; + in + if sorted == [ ] then + throw "Kein vorheriger Termin mit gleichem Veranstaltungsort gefunden." + else + lib.last sorted; in { imports = [ config.types.document ]; @@ -144,19 +158,33 @@ type = types.str; example = "Samstag, 20.12.2025 von 15:00 bis 17:00 Uhr"; }; + venue = mkOption { + description = '' + Kennzeichen des Veranstaltungsorts zum Wiederverwenden von Angaben in nachfolgenden Terminen. + ''; + type = with types; nullOr singleLineStr; + default = null; + }; address.name = mkOption { description = '' Eigenname des Veranstaltungsorts ''; type = with types; nullOr str; example = "Treffpunkthaus"; - default = null; + default = if cfg.venue == null then null else prior.address.name; + defaultText = lib.literalMD "Adresse des vorherigen Termins mit gleichem Veranstaltungsort, falls vorhanden."; }; address.text = mkOption { description = '' Ort in Textform ''; type = types.lines; + default = + if cfg.venue == null then + throw "Ohne Veranstaltungsort-Kennzeichen muss die Adresse vollständig angegeben werden." + else + prior.address.text; + defaultText = lib.literalMD "Adresse des vorherigen Termins mit gleichem Veranstaltungsort."; }; address.openstreetmap = mkOption { description = '' @@ -175,6 +203,19 @@ example = { node = 6549438363; }; + default = + if cfg.venue == null then + throw "Ohne Veranstaltungsort-Kennzeichen muss die Adresse vollständig angegeben werden." + else + prior.address.openstreetmap; + defaultText = lib.literalMD "Adresse des vorherigen Termins mit gleichem Veranstaltungsort."; + }; + address.once = mkOption { + description = '' + Wenn gesetzt, wird die Adresse nicht in nachfolgende Termine vererbt. + ''; + type = types.bool; + default = false; }; }; }; diff --git a/www/termine/2025-11-low-budget-poetry-slam.nix b/www/termine/2025-11-low-budget-poetry-slam.nix index 5ff2780..6560c2e 100644 --- a/www/termine/2025-11-low-budget-poetry-slam.nix +++ b/www/termine/2025-11-low-budget-poetry-slam.nix @@ -4,6 +4,7 @@ date.start = "2025-11-22"; time.start = "19:30"; datetime-range-text = "Samstag, 22.11.2025 ${config.time.start}"; + venue = "treffpunkthaus"; address = { name = "Treffpunkthaus Heimfeld"; openstreetmap.node = 6549438363; diff --git a/www/termine/2026-03-low-budget-poetry-slam.nix b/www/termine/2026-03-low-budget-poetry-slam.nix index 385f08f..7a4ee57 100644 --- a/www/termine/2026-03-low-budget-poetry-slam.nix +++ b/www/termine/2026-03-low-budget-poetry-slam.nix @@ -4,14 +4,7 @@ date.start = "2026-03-14"; time.start = "19:30"; datetime-range-text = "Samstag, 14.03.2026 ${config.time.start}"; - address = { - name = "Treffpunkthaus Heimfeld"; - openstreetmap.node = 6549438363; - text = '' - Friedrich-Naumann-Straße 9-11 - 21075 Hamburg - ''; - }; + venue = "treffpunkthaus"; data = [ { name = "Moderation"; diff --git a/www/termine/2026-05-low-budget-poetry-slam.nix b/www/termine/2026-05-low-budget-poetry-slam.nix index a1b2265..a49a3b4 100644 --- a/www/termine/2026-05-low-budget-poetry-slam.nix +++ b/www/termine/2026-05-low-budget-poetry-slam.nix @@ -4,14 +4,7 @@ date.start = "2026-05-09"; time.start = "19:30"; datetime-range-text = "Samstag, 09.05.2026 ${config.time.start}"; - address = { - name = "Treffpunkthaus Heimfeld"; - openstreetmap.node = 6549438363; - text = '' - Friedrich-Naumann-Straße 9-11 - 21075 Hamburg - ''; - }; + venue = "treffpunkthaus"; data = [ { name = "Moderation"; diff --git a/www/termine/2026-09-low-budget-poetry-slam.nix b/www/termine/2026-09-low-budget-poetry-slam.nix index ad27d67..f36a5a4 100644 --- a/www/termine/2026-09-low-budget-poetry-slam.nix +++ b/www/termine/2026-09-low-budget-poetry-slam.nix @@ -4,14 +4,7 @@ date.start = "2026-09-12"; time.start = "19:30"; datetime-range-text = "Samstag, 12.09.2026 ${config.time.start}"; - address = { - name = "Treffpunkthaus Heimfeld"; - openstreetmap.node = 6549438363; - text = '' - Friedrich-Naumann-Straße 9-11 - 21075 Hamburg - ''; - }; + venue = "treffpunkthaus"; data = [ { name = "Moderation"; diff --git a/www/termine/2026-11-low-budget-poetry-slam.nix b/www/termine/2026-11-low-budget-poetry-slam.nix index 69ec1e7..6c026c2 100644 --- a/www/termine/2026-11-low-budget-poetry-slam.nix +++ b/www/termine/2026-11-low-budget-poetry-slam.nix @@ -4,14 +4,7 @@ date.start = "2026-11-14"; time.start = "19:30"; datetime-range-text = "Samstag, 14.11.2026 ${config.time.start}"; - address = { - name = "Treffpunkthaus Heimfeld"; - openstreetmap.node = 6549438363; - text = '' - Friedrich-Naumann-Straße 9-11 - 21075 Hamburg - ''; - }; + venue = "treffpunkthaus"; data = [ { name = "Moderation"; |
