From b731149df747a142b9b02802bbf1d9ffdd1a88a4 Mon Sep 17 00:00:00 2001 From: alan Date: Fri, 15 Nov 2024 23:58:35 +0100 Subject: [PATCH] Fix notification AC si adresses mails de la MUS et/ou BSV sont vides en base. --- core/mixins.py | 14 ++++++++++---- core/views.py | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/core/mixins.py b/core/mixins.py index a9afa9ca..020f315c 100644 --- a/core/mixins.py +++ b/core/mixins.py @@ -1,6 +1,6 @@ from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError -from django.db import models +from django.db import models, transaction from django.urls import reverse from core.forms import DocumentUploadForm, DocumentEditForm @@ -106,15 +106,21 @@ def notify_ac(self, sender): raise ValidationError("Cet objet est déjà notifié à l'AC") self.is_ac_notified = True - message = Message.objects.create( + message = Message( message_type=Message.NOTIFICATION_AC, title="Notification à l'AC", content="L'administration a été notifiée de cette fiche.", sender=sender, content_object=self, ) - notify_message(message) - self.save() + + try: + notify_message(message) + with transaction.atomic(): + self.save() + message.save() + except ValidationError as e: + raise ValidationError(f"Une erreur s'est produite lors de la notification : {e.message}") class Meta: abstract = True diff --git a/core/views.py b/core/views.py index 64df7df1..542ab9e9 100644 --- a/core/views.py +++ b/core/views.py @@ -353,7 +353,7 @@ def post(self, request): messages.success(request, "L'administration centrale a été notifiée avec succès") except AttributeError: messages.error(request, "Ce type d'objet n'est pas compatible avec une notification à l'AC.") - except ValidationError: - messages.error(request, "Cet objet est déjà notifié à l'AC") + except ValidationError as e: + messages.error(request, e.message) return safe_redirect(request.POST.get("next"))