feat: add notification services and observation views implementation

This commit is contained in:
Karl Determe 2026-10-06 16:22:23 +02:00
parent e27a979a53
commit 775151c72d
2 changed files with 9 additions and 15 deletions

View file

@ -666,9 +666,7 @@ def get_or_create_observation_discussion(observation):
"""
Trouve ou crée la discussion associée à une observation.
Les participants sont : le créateur de l'observation + les membres des
équipes gestionnaires d'assets (is_assets_manager=True) pour la catégorie
concernée.
Les participants sont : le créateur de l'observation.
Retourne (discussion, created).
"""
from .models import Discussion
@ -703,18 +701,6 @@ def get_or_create_observation_discussion(observation):
if observation.created_by_id:
participants.add(observation.created_by)
if observation.category_id:
try:
from contracts.models import CompanyMember
from django.contrib.auth.models import User as AuthUser
manager_users = AuthUser.objects.filter(
companymember__teams__is_assets_manager=True,
companymember__teams__asset_categories=observation.category,
).distinct()
participants.update(manager_users)
except Exception:
pass
discussion.participants.set(participants)
return discussion, True

View file

@ -1000,6 +1000,8 @@ def observation_change_status(request, observation_id):
if new_status == 'needs_info':
from notifications.services import get_or_create_observation_discussion, post_message
discussion, _created = get_or_create_observation_discussion(observation)
if request.user.is_authenticated:
discussion.participants.add(request.user)
post_message(
discussion=discussion,
author=request.user,
@ -1016,6 +1018,8 @@ def observation_change_status(request, observation_id):
)
from notifications.services import get_or_create_observation_discussion, post_message
discussion, _created = get_or_create_observation_discussion(observation)
if request.user.is_authenticated:
discussion.participants.add(request.user)
post_message(
discussion=discussion,
author=request.user,
@ -1282,6 +1286,8 @@ def observation_add(request, observation_id=None):
)
from notifications.services import get_or_create_observation_discussion, post_message
discussion, _created = get_or_create_observation_discussion(observation)
if request.user.is_authenticated:
discussion.participants.add(request.user)
post_message(
discussion=discussion,
author=request.user,
@ -2004,6 +2010,8 @@ def observation_add_message(request, observation_id):
)
discussion, _created = get_or_create_observation_discussion(observation)
if request.user.is_authenticated:
discussion.participants.add(request.user)
files = request.FILES.getlist('attachments') or None
post_message(discussion=discussion, author=request.user, content=content, files=files)