From ae21c7cae7bb6f3c76dccf963278158a13078e18 Mon Sep 17 00:00:00 2001 From: lizerk Date: Wed, 11 Mar 2026 17:38:55 +0300 Subject: [PATCH] =?UTF-8?q?refactor(communications):=20=D0=A1=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=8C=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B5=20=D1=83=D0=B2?= =?UTF-8?q?=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE?= =?UTF-8?q?=D0=BF=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC=D0=B8=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20COMMUNICATIONS?= =?UTF-8?q?=5FAUTO=5FNOTIFY?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлен флаг COMMUNICATIONS_AUTO_NOTIFY (по умолчанию True) - Оба сигнала теперь проверяют флаг перед выполнением - Улучшена документация: объяснено что сигналы опциональны - Для standalone использования можно отключить автоуведомления --- .../communications/notifications/signals.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/communications/notifications/signals.py b/backend/communications/notifications/signals.py index 25a711b7..422a1820 100644 --- a/backend/communications/notifications/signals.py +++ b/backend/communications/notifications/signals.py @@ -4,8 +4,16 @@ Django signals для автоматической генерации уведо Обрабатывает события: - post_save для Message - новое сообщение (с упоминаниями, ответами) - m2m_changed для Chat.participants - добавление пользователей в чат + +ВАЖНО: Эти сигналы ОПЦИОНАЛЬНЫ и могут быть отключены через настройку: + COMMUNICATIONS_AUTO_NOTIFY = False # в settings.py + +По умолчанию включены для обратной совместимости с EUSRR. +Для standalone использования рекомендуется вызывать handlers вручную +или отключить автоматические уведомления. """ +from django.conf import settings from django.contrib.auth import get_user_model from django.db.models.signals import post_save, m2m_changed from django.dispatch import receiver @@ -15,6 +23,9 @@ from .handlers import notify_new_message, notify_chat_added User = get_user_model() +# Проверяем, включены ли автоматические уведомления +_AUTO_NOTIFY_ENABLED = getattr(settings, 'COMMUNICATIONS_AUTO_NOTIFY', True) + @receiver(post_save, sender=Message) def create_message_notifications(sender, instance, created, **kwargs): @@ -28,7 +39,12 @@ def create_message_notifications(sender, instance, created, **kwargs): ОПТИМИЗАЦИЯ: Уведомления отправляются через универсальную систему channels.py → Celery → WebSocket/Email/Push + + NOTE: Можно отключить через COMMUNICATIONS_AUTO_NOTIFY = False """ + if not _AUTO_NOTIFY_ENABLED: + return + if not created or instance.is_system or instance.is_deleted: return @@ -45,7 +61,12 @@ def create_chat_added_notifications(sender, instance, action, pk_set, **kwargs): instance: Chat объект action: Тип изменения ('post_add', 'post_remove', etc.) pk_set: Набор ID добавленных/удаленных пользователей + + NOTE: Можно отключить через COMMUNICATIONS_AUTO_NOTIFY = False """ + if not _AUTO_NOTIFY_ENABLED: + return + if action != 'post_add': return