From 92dcce901b463b95b04be31b86206089e5b867bf Mon Sep 17 00:00:00 2001 From: Zareian Date: Thu, 8 Oct 2026 11:59:26 +0330 Subject: [PATCH] Ticket-reply notification receiver skips raw saves (loaddata made 5 duplicate notifications) Co-Authored-By: Claude Sonnet 5.5 --- content/tests_loaddata_raw.py | 10 ++++++++++ support/receivers.py | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/content/tests_loaddata_raw.py b/content/tests_loaddata_raw.py index 15fa41b..6d5e62a 100644 --- a/content/tests_loaddata_raw.py +++ b/content/tests_loaddata_raw.py @@ -16,3 +16,13 @@ class RawSaveTests(TestCase): answer = UserAnswer(user_id=1, question=q, choice=c, correct=True) post_save.send(UserAnswer, instance=answer, created=True, raw=True) self.assertEqual(NodeProgress.objects.count(), 0) + + +class RawTicketReplyTests(TestCase): + def test_raw_support_reply_creates_no_notification(self): + from notifications.models import Notification + from support.models import Ticket, TicketMessage + t = Ticket.objects.create(user_id=1, subject='s') + m = TicketMessage(ticket=t, sender='support', text='x') + post_save.send(TicketMessage, instance=m, created=True, raw=True) + self.assertEqual(Notification.objects.count(), 0) diff --git a/support/receivers.py b/support/receivers.py index 5c6d646..8fd5dee 100644 --- a/support/receivers.py +++ b/support/receivers.py @@ -13,8 +13,9 @@ from .models import TicketMessage @receiver(post_save, sender=TicketMessage, dispatch_uid='support_notify_ticket_reply') -def _notify_ticket_reply(sender, instance, created, **kwargs): - if not created or instance.sender != 'support': +def _notify_ticket_reply(sender, instance, created, raw=False, **kwargs): + # raw=True: loaddata (انتقال به Postgres)؛ اعلانِ آن پیام‌ها خودش در فایل است و اینجا دوباره ساخته می‌شد. + if raw or not created or instance.sender != 'support': return from notifications.services import notify