diff --git a/loko/notifications/services.py b/loko/notifications/services.py index 8a78894..3ff4a1b 100644 --- a/loko/notifications/services.py +++ b/loko/notifications/services.py @@ -376,8 +376,48 @@ def _notify_mentions(discussion, author, content): # Mentions d'équipes if mentioned_team_ids: - teams = Team.objects.filter(pk__in=mentioned_team_ids).prefetch_related('members') - for team in teams: + from contracts.models import CompanyTeam + company_teams = list(CompanyTeam.objects.filter(pk__in=mentioned_team_ids)) + for team in company_teams: + team_users = list( + User.objects.filter( + companymember__teams=team, + is_active=True + ).exclude(pk=exclude_pk).distinct() + ) + if not team_users: + continue + + team_title = f"{author_name} a mentionné l'équipe {team.name} — {discussion.title or str(discussion)}" + notif = Notification.objects.create( + title=team_title, + content=msg_preview, + notification_type=Notification.TYPE_MESSAGE, + sender=author, + action_url=action_url, + action_label=action_label, + source_app='discussions', + source_discussion=discussion, + ) + NotificationRecipient.objects.bulk_create([ + NotificationRecipient(notification=notif, user=u) + for u in team_users + ], ignore_conflicts=True) + + # Ajouter les membres de l'équipe comme participants + discussion.participants.add(*team_users) + + from .webpush import send_webpush_to_users + send_webpush_to_users( + users=team_users, + title=team_title, + body=msg_preview, + action_url=action_url, + ) + + # Support hérité notifications.Team (si existant) + legacy_teams = Team.objects.filter(pk__in=mentioned_team_ids).prefetch_related('members') + for team in legacy_teams: notif = Notification.objects.create( title=title, content=msg_preview, @@ -390,10 +430,11 @@ def _notify_mentions(discussion, author, content): ) TeamNotificationTarget.objects.create(notification=notif, team=team) # Ajouter les membres de l'équipe comme participants - discussion.participants.add(*team.members.all()) + legacy_members = list(team.members.exclude(pk=exclude_pk)) + discussion.participants.add(*legacy_members) from .webpush import send_webpush_to_users send_webpush_to_users( - users=team.members.all(), + users=legacy_members, title=title, body=msg_preview, action_url=action_url, diff --git a/loko/notifications/templates/notifications/discussion_detail.html b/loko/notifications/templates/notifications/discussion_detail.html index 30117fe..e210c4e 100644 --- a/loko/notifications/templates/notifications/discussion_detail.html +++ b/loko/notifications/templates/notifications/discussion_detail.html @@ -176,12 +176,18 @@ {% if not discussion.is_closed %} -