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
+23 -10
View File
@@ -1,3 +1,4 @@
from ccma.domain.models import HOUSEKEEPER_MEMBER_FIELD_LABELS
from ccma.domain.dates import DateValidationError, validate_member_dates
from ccma.rules.api import RuleContext, task
@@ -7,18 +8,30 @@ ORDER = 10
def evaluate(context: RuleContext):
member = context.member
if not member.birth_date.strip():
return [
actions = []
optional_fields = set(getattr(context.settings, "optional_member_fields", ()))
for field, label in HOUSEKEEPER_MEMBER_FIELD_LABELS.items():
if field in optional_fields:
continue
if str(getattr(member, field, "")).strip():
continue
code = "missing_birth_date" if field == "birth_date" else f"missing_member_field:{field}"
detail = (
"Das Geburtsdatum muss in der Mitgliederakte ergänzt werden."
if field == "birth_date"
else f"Das Feld {label} muss in der Mitgliederakte ergänzt werden."
)
actions.append(
task(
rule_id=RULE_ID,
member=member,
key_suffix="missing",
key_suffix=f"missing:{field}",
severity="warning",
title=f"{member.display_name}: Geburtsdatum fehlt",
detail="Das Geburtsdatum muss in der Mitgliederakte ergänzt werden.",
code="missing_birth_date",
title=f"{member.display_name}: {label} fehlt",
detail=detail,
code=code,
)
]
)
try:
validate_member_dates(
birth_date=member.birth_date,
@@ -27,7 +40,7 @@ def evaluate(context: RuleContext):
today=context.today,
)
except DateValidationError as exc:
return [
actions.append(
task(
rule_id=RULE_ID,
member=member,
@@ -37,5 +50,5 @@ def evaluate(context: RuleContext):
detail=str(exc),
code="invalid_member_dates",
)
]
return []
)
return actions
@@ -44,7 +44,8 @@ def evaluate(context: RuleContext):
)
)
for year in (context.today.year, context.today.year + 1):
year_from = started_at.year if getattr(context.settings, "retroactive_claims", False) else context.today.year
for year in range(year_from, context.today.year + 2):
actions.extend(_membership_claims(context, started_at, accepted_at, year))
return actions