Update member UI and related app changes

This commit is contained in:
Marcel Peterkau
2026-06-26 21:57:11 +02:00
parent 833075f0dc
commit 30b6d253b2
18 changed files with 490 additions and 84 deletions
+11
View File
@@ -7,6 +7,7 @@ from dataclasses import dataclass
from pathlib import Path
from typing import TYPE_CHECKING
from ccma.domain.models import DEFAULT_OPTIONAL_MEMBER_FIELDS, normalize_optional_member_fields
from ccma.storage.atomic import write_json_atomic
if TYPE_CHECKING:
@@ -25,6 +26,8 @@ class AppConfig:
anniversary_days_before: int = 14
anniversary_days_after: int = 7
anniversary_intervals: str = "1Y;5Y;10Y;25Y;50Y"
retroactive_claims: bool = False
optional_member_fields: tuple[str, ...] = DEFAULT_OPTIONAL_MEMBER_FIELDS
window_geometry: str = ""
window_state: str = "normal"
monitor_bounds: tuple[int, int, int, int] | None = None
@@ -48,6 +51,8 @@ class AppConfig:
"anniversary_days_before": self.anniversary_days_before,
"anniversary_days_after": self.anniversary_days_after,
"anniversary_intervals": self.anniversary_intervals,
"retroactive_claims": self.retroactive_claims,
"optional_member_fields": list(normalize_optional_member_fields(self.optional_member_fields)),
"window_geometry": self.window_geometry,
"window_state": self.window_state,
"monitor_bounds": list(self.monitor_bounds) if self.monitor_bounds else None,
@@ -65,6 +70,8 @@ class AppConfig:
anniversary_days_before=self.anniversary_days_before,
anniversary_days_after=self.anniversary_days_after,
anniversary_intervals=self.anniversary_intervals,
retroactive_claims=self.retroactive_claims,
optional_member_fields=self.optional_member_fields,
)
except IntervalValidationError:
return HousekeeperSettings()
@@ -101,6 +108,10 @@ def load_config() -> AppConfig:
anniversary_days_before=int(data.get("anniversary_days_before", 14)),
anniversary_days_after=int(data.get("anniversary_days_after", 7)),
anniversary_intervals=str(data.get("anniversary_intervals", "1Y;5Y;10Y;25Y;50Y")),
retroactive_claims=bool(data.get("retroactive_claims", False)),
optional_member_fields=normalize_optional_member_fields(
data.get("optional_member_fields", DEFAULT_OPTIONAL_MEMBER_FIELDS)
),
window_geometry=str(data.get("window_geometry", "")),
window_state=str(data.get("window_state", "normal")),
monitor_bounds=monitor_bounds,