CP_EHRENAMT/app/notifications.py
2026-06-25 18:58:44 +02:00

40 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""In-App-Benachrichtigungen erzeugen (v1: kein Push/E-Mail, siehe CLAUDE.md).
Kleine Helfer, die Benachrichtigungs-Datensätze anlegen. Sie committen NICHT
das übernimmt der aufrufende Request, damit die Auslöser-Aktion und ihre Hinweise
in einer Transaktion landen. Immer team-gescoped.
"""
from . import db
from .models import Benachrichtigung, User
from .team_scope import get_active_team_id, team_query
def benachrichtigen(user_id, text, url=None, typ=Benachrichtigung.TYP_DIENST):
"""Einen Hinweis an genau eine Person anlegen."""
db.session.add(
Benachrichtigung(
team_id=get_active_team_id(),
user_id=user_id,
typ=typ,
text=text,
url=url,
)
)
def benachrichtigen_team(text, url=None, typ=Benachrichtigung.TYP_NACHRICHT, ausser_user_ids=()):
"""Einen Hinweis an alle Team-Mitglieder anlegen (optional einige auslassen)."""
ausgenommen = set(ausser_user_ids)
for user in team_query(User).all():
if user.id in ausgenommen:
continue
db.session.add(
Benachrichtigung(
team_id=user.team_id,
user_id=user.id,
typ=typ,
text=text,
url=url,
)
)