aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin <valentin@fricklerhandwerk.de>2026-06-07 11:45:00 +0200
committerValentin <valentin@fricklerhandwerk.de>2026-06-07 11:45:00 +0200
commit2a94ed352e1a5fdeb0fdba9a5e7ea8aa8f35f027 (patch)
tree9b855803f1c2c4f311f13b5df67749375bfbbc74
parent09fc28b167b135dbc874ea8f4450df432156db6b (diff)
Adressvererbung zwischen Terminen über Veranstaltungsort-Kennzeichen
-rw-r--r--www/framework/default.nix7
-rw-r--r--www/framework/event.nix45
-rw-r--r--www/termine/2025-11-low-budget-poetry-slam.nix1
-rw-r--r--www/termine/2026-03-low-budget-poetry-slam.nix9
-rw-r--r--www/termine/2026-05-low-budget-poetry-slam.nix9
-rw-r--r--www/termine/2026-09-low-budget-poetry-slam.nix9
-rw-r--r--www/termine/2026-11-low-budget-poetry-slam.nix9
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";