refactor(communications): Сделать автоматические уведомления опциональными через COMMUNICATIONS_AUTO_NOTIFY
- Добавлен флаг COMMUNICATIONS_AUTO_NOTIFY (по умолчанию True) - Оба сигнала теперь проверяют флаг перед выполнением - Улучшена документация: объяснено что сигналы опциональны - Для standalone использования можно отключить автоуведомления
This commit is contained in:
parent
2e1f413264
commit
ae21c7cae7
@ -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
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user