rss-news/backend/app/policy.py

35 lines
1 KiB
Python

from __future__ import annotations
from typing import Any
def evaluate_source_policy(source: dict[str, Any] | None) -> list[str]:
issues: list[str] = []
if not source:
issues.append("Keine Quelle zugeordnet")
return issues
risk_level = (source.get("risk_level") or "").strip().lower()
if risk_level != "green":
issues.append(f"Quelle nicht freigegeben (risk_level={risk_level or 'unset'})")
terms_url = (source.get("terms_url") or "").strip()
if not terms_url:
issues.append("terms_url fehlt")
license_name = (source.get("license_name") or "").strip()
if not license_name:
issues.append("license_name fehlt")
last_reviewed_at = (source.get("last_reviewed_at") or "").strip()
if not last_reviewed_at:
issues.append("last_reviewed_at fehlt")
if int(source.get("is_enabled", 0) or 0) != 1:
issues.append("Quelle ist deaktiviert")
return issues
def is_source_allowed(source: dict[str, Any] | None) -> bool:
return len(evaluate_source_policy(source)) == 0