mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-07-03 12:10:05 +02:00
fix: tolerate damaged contribution files
This commit is contained in:
@@ -10,7 +10,7 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
from uuid import uuid4
|
||||
|
||||
from ccma.domain.models import HousekeeperFinding
|
||||
from ccma.domain.models import ContributionData, HousekeeperFinding
|
||||
from ccma.rules.api import RuleAction, RuleContext
|
||||
from ccma.rules.loader import LoadedRule, load_rules
|
||||
from ccma.services.intervals import AnniversaryInterval, parse_anniversary_intervals
|
||||
@@ -68,21 +68,30 @@ class Housekeeper:
|
||||
rules = load_rules(self.repository.root)
|
||||
repository_config = self.repository.get_configuration()
|
||||
for member in self.repository.list_members():
|
||||
try:
|
||||
contributions = self.repository.get_contributions(member.member_id)
|
||||
contributions_error = None
|
||||
except RepositoryError as exc:
|
||||
contributions = ContributionData()
|
||||
contributions_error = str(exc)
|
||||
for rule in rules:
|
||||
scope = (rule.rule_id, member.member_id)
|
||||
try:
|
||||
context = RuleContext(
|
||||
member=member,
|
||||
contributions=self.repository.get_contributions(member.member_id),
|
||||
contributions=contributions,
|
||||
today=current_date,
|
||||
settings=self.settings,
|
||||
repository_config=repository_config,
|
||||
contributions_error=contributions_error,
|
||||
)
|
||||
actions = rule.evaluate(context)
|
||||
if not isinstance(actions, list):
|
||||
raise TypeError("evaluate(context) muss eine Liste zurückgeben")
|
||||
for action in actions:
|
||||
self._apply_action(items, action, rule, run_id, now)
|
||||
if action.action == "create_claim":
|
||||
contributions = self.repository.get_contributions(member.member_id)
|
||||
except Exception as exc:
|
||||
self._refresh_task(
|
||||
items,
|
||||
|
||||
Reference in New Issue
Block a user