Добавлен эндпойнт api/messages/new с логикой выбора режима отправки, указанной в задаче #659.
Обновление: эндпойнт api/messages/new теперь стал api/messages
В fill_db.py внесено изменение, предотвращающее наличие у фейковых пользователей telegram_id, могущих оказаться реальными. Подстраховался перед тестированием.
Схема UserFilter адаптирована для её применения также и в новом эндпойнте.
Внесены изменения в функцию UserRepository.get_filtered_objects_by_page для возможности её использования также и в новом эндпойнте:
добавлен режим работы без ограничения выдачи (пагинации);
исправлена ошибка, которая приводила к неправильной сортировке выдачи в эндпойнте api/users/. Хотя в новом эндпойнте сортировка и не критична, но при тестировании всё же удобно иметь правильную.
Выполнен рефакторинг остальных эндпойнтов для отправки уведомлений: /api/messages/group, /api/messages, /api/messages/{telegram_id} для однообразия используемых подходов и упрощения кода. Часть функциональности вынесена, при этом, в классы TelegramNotificationUsersGroups, InfoRate.
Решена задача #621:
URL эндпойнта /api/messages изменён на api/send_telegram_notification;
поле mode в схеме запроса переименовано в has_mailing.
Как тестировал
Локально, через страницу документации API. Пользователей в БД создавал с помощью python3 fill_db.py with_fake_users плюс добавлялся сам.
Проверил работу всех эндпойнтов из категории Messages в различных режимах, а также эндпойнта api/users/, так как используемый им код был адаптирован для работы в новом эндпойнте.
Проверил также, что работает уведомление в Телеграм подписанного пользователя, когда создаётся новая задача в его категории (рефакторинг и сюда пролез).
Что сделано
api/messages/new
с логикой выбора режима отправки, указанной в задаче #659. Обновление: эндпойнтapi/messages/new
теперь сталapi/messages
fill_db.py
внесено изменение, предотвращающее наличие у фейковых пользователейtelegram_id
, могущих оказаться реальными. Подстраховался перед тестированием.UserFilter
адаптирована для её применения также и в новом эндпойнте.UserRepository.get_filtered_objects_by_page
для возможности её использования также и в новом эндпойнте:api/users/
. Хотя в новом эндпойнте сортировка и не критична, но при тестировании всё же удобно иметь правильную./api/messages/group
,/api/messages
,/api/messages/{telegram_id}
для однообразия используемых подходов и упрощения кода. Часть функциональности вынесена, при этом, в классыTelegramNotificationUsersGroups
,InfoRate
./api/messages
изменён наapi/send_telegram_notification
;mode
в схеме запроса переименовано вhas_mailing
.Как тестировал
Локально, через страницу документации API. Пользователей в БД создавал с помощью
python3 fill_db.py with_fake_users
плюс добавлялся сам. Проверил работу всех эндпойнтов из категории Messages в различных режимах, а также эндпойнтаapi/users/
, так как используемый им код был адаптирован для работы в новом эндпойнте. Проверил также, что работает уведомление в Телеграм подписанного пользователя, когда создаётся новая задача в его категории (рефакторинг и сюда пролез).