Проблема: - Монолитный notification_signals.py (~200 строк) смешивал разные concerns - Сложно поддерживать и понимать логику уведомлений - Отсутствовала интеграция с API для уведомлений о лайках Решение: Разделен на модульную структуру feed/notifications/: - config.py - NotificationVerbs, MessageTemplates, ActionURLs, truncate_text - handlers.py - notify_new_post(), notify_comment(), notify_post_reaction(), get_post_recipients() - signals.py - Django signal receivers (@receiver) - __init__.py - публичный API модуля Изменения: - Создан: feed/notifications/ модуль с 4 файлами - Переименован: notification_signals.py → notification_signals.py.old - Изменен: apps.py - обновлен импорт на feed.notifications - Изменен: api/v1/feed/views.py - добавлен вызов notify_post_reaction() в метод like() Преимущества: - ✅ Единообразие с requests_app и procurement - ✅ Четкое разделение ответственности (SRP) - ✅ Легче тестировать отдельные компоненты - ✅ Публичный API через __init__.py - ✅ Уведомления о лайках теперь работают - ✅ Централизованные шаблоны сообщений Верификация: - python manage.py check - успешно
30 lines
994 B
Python
30 lines
994 B
Python
"""
|
||
Модуль уведомлений для Feed приложения.
|
||
|
||
Публичный API:
|
||
- NotificationVerbs - константы глаголов уведомлений
|
||
- MessageTemplates - шаблоны сообщений
|
||
- ActionURLs - генераторы URL-адресов
|
||
- notify_post_reaction - функция для уведомления о реакциях (вызывается из views)
|
||
|
||
Использование:
|
||
from feed.notifications import notify_post_reaction
|
||
|
||
# В view при добавлении лайка:
|
||
notify_post_reaction(post, request.user)
|
||
"""
|
||
|
||
from .config import NotificationVerbs, MessageTemplates, ActionURLs
|
||
from .handlers import notify_post_reaction
|
||
|
||
# Импортируем handlers и signals для регистрации
|
||
from . import handlers # noqa: F401
|
||
from . import signals # noqa: F401
|
||
|
||
__all__ = [
|
||
'NotificationVerbs',
|
||
'MessageTemplates',
|
||
'ActionURLs',
|
||
'notify_post_reaction',
|
||
]
|