refactor(communications): Сделать автоматические уведомления опциональными через COMMUNICATIONS_AUTO_NOTIFY

- Добавлен флаг COMMUNICATIONS_AUTO_NOTIFY (по умолчанию True)
- Оба сигнала теперь проверяют флаг перед выполнением
- Улучшена документация: объяснено что сигналы опциональны
- Для standalone использования можно отключить автоуведомления
This commit is contained in:
lizerk 2026-03-11 17:38:55 +03:00
parent 2e1f413264
commit ae21c7cae7

View File

@ -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