Нужно добавить эндпоинт "api/messages/new" с новой логикой выбора режима отправки.
_Для инфо: url временный, в рамках задачи эндпоинт "api/messages" будет переименован в "api/send_telegramnotification". Соответственно эндпоинт "api/messages/new" станет "api/messages".
Эндпоинт должен быть доступен на post-запрос любому админу с is_active = True.
В схеме два поля: "message" и "mode".
В отличие от первой версии "api/messages", поле "mode" нового эндпоинта должно принимать json с полями: "role", "status" и "authorization". Все поля необязательны. То есть может быть передан и пустой json. В зависимости от значения полей должна формироваться выборка пользователей и осуществляться рассылка сообщения по полученной выборке.
Во всех случаях рассылка должна быть только по пользователи, у которых бот не заблокирован (поле banned в users должно быть равно False).
Формирование выборки пользователей должно происходить по тем же принципам, которые заложены в фильтрацию для get-запроса эндпоинта "api/users". Фильтрация реализовывалась в рамках задачи и PR.
Поле "role":
Попадание в выборку для рассылки зависит от значения поля "role" в users.
Возможные значения:
"volunteer" - пользователи со значением "volunteer" в поле "role" в users;
"fund" - пользователи со значением "fund" в поле "role" в users;
"unknown" - пользователей, у которых роль не определена;
значение не передано - пользователи, независимо от роли.
Поле "status":
Попадание в выборку для рассылки зависит от значения поля "moderation_status" в пользователе сайта external_site_user, связанном с пользователем user.
Возможные значения:
"new" - пользователи users, у связанных external_site_users которых в поле "moderation_status" значение "new";
"wait" - пользователи users, у связанных external_site_users которых в поле "moderation_status" значение "wait";
"moderated" - пользователи users, у связанных external_site_users которых в поле "moderation_status" значение "moderated";
"no_moderated" - пользователи users, у связанных external_site_users которых в поле "moderation_status" значение "no_moderated";
"blocked" - пользователи users, у связанных external_site_users которых в поле "moderation_status" значение "blocked";
"unknown" - пользователи users, у связанных external_site_users которых статус модерации не известен, или users, у которых нет привязки к external_site_user;
значение не передано - пользователи, независимо от статуса модерации.
Поле "authorization":
Попадание в выборку для рассылки зависит от наличия связи пользователей user с пользователем сайта external_site_user.
Возможные значения:
"True" - пользователи users, у которых есть привязка к external_site_user;
"False" - пользователи users, у которых нет привязки к external_site_user;
значение не передано - пользователи, независимо от наличия привязки к external_site_user.
Таким образом при пустом json в поле "mode" рассылка должна осуществляться по всем пользователям users, у которых бот не заблокирован.
Нужно добавить эндпоинт "api/messages/new" с новой логикой выбора режима отправки. _Для инфо: url временный, в рамках задачи эндпоинт "api/messages" будет переименован в "api/send_telegramnotification". Соответственно эндпоинт "api/messages/new" станет "api/messages".
Эндпоинт должен быть доступен на post-запрос любому админу с is_active = True. В схеме два поля: "message" и "mode".
В отличие от первой версии "api/messages", поле "mode" нового эндпоинта должно принимать json с полями: "role", "status" и "authorization". Все поля необязательны. То есть может быть передан и пустой json. В зависимости от значения полей должна формироваться выборка пользователей и осуществляться рассылка сообщения по полученной выборке. Во всех случаях рассылка должна быть только по пользователи, у которых бот не заблокирован (поле banned в users должно быть равно False).
Формирование выборки пользователей должно происходить по тем же принципам, которые заложены в фильтрацию для get-запроса эндпоинта "api/users". Фильтрация реализовывалась в рамках задачи и PR.
Поле "role":
Поле "status":
Поле "authorization":
Таким образом при пустом json в поле "mode" рассылка должна осуществляться по всем пользователям users, у которых бот не заблокирован.