Описание модуля.
Модуль предназначен для получения текстового сообщения из объекта класса WebHook в соответствии с заранее определенными шаблонами.
Как использовать.
Необходимо выполнить импорт основной функции модуля get_message.
from src.utils.msg_formatter_utils import get_message
При вызове функции необходимо передать в нее единственный аргумент - объект класса Webhook.
message = get_message(web_hook_object)
В ответ функция вернет объект типа string, содержащий результат работы функции, в соответствии с заранее определенными шаблонами.
Подробнее о алгоритме работы функции get_message указано get_message.
Подробнее о шаблонах для формирования сообщений указано здесь.
Функции модуля.
- get_message
Основная функция модуля, предназначенная для преобразования содержимого объекта класса WebHook в текстовое сообщение типа string
- get_string
Функция, предназначенная для получения отдельных строк при формировании общего текстового сообщения
- get_changes
Функция, предназначенная для обработки содержимого объекта класса Change внутри объекта класса WebHook и формирования текстового сообщения из его содержимого
- get_named_url
Функция, предназначенная для формирования ссылки на объект в формате html, содержащей имя объекта
- get_untag_truncated_string
Функция, предназначенная для очистки текстового сообщения от заданных тэгов и ограничения его длины
- get_object_name
Функция, предназначенная для получения имени объекта, с учетом особенностей структуры обрабатываемого объекта. Информация о имени объекта содержится в поле subject либо name, либо может отсутствовать, в зависимости от типа объекта
- get_object_with_url_string
Функция, предназначенная для формирования текстового сообщения, содержащего информацию о типе, имени (если оно содержится в атрибутах обрабатываемого объекта) объекте и гиперссылке на него
- get_parents_string
Функция, предназначенная для получения информации о родительских объектах, обрабатываемого объекта
- get_assigned_to_string
Функция, предназначенная для получения информации о назначенных ответственных, а также о количестве ответственных для данной задачи
- get_points_string
Функция, предназначенная для формирования сводной строки, содержащей информацию о начисленных очках по разным направлениям объекта и суммарном количестве очков
- get_change_points_string
Функция, предназначенная для формирования сводной строки, содержащей информацию о изменении количества начисленных очков по разным направлениям объекта
- get_comment_string
Функция, предназначенная для обработки информации связанной с изменениями в комментариях объекта
- get_attachment_string
Функция, предназначенная для обработки информации связанной с вложениями объекта
- get_from_to_key
Функция, предназначенная для формирования ключа получения строки из словаря в зависимости от наличия информации в полях from, to объекта
Шаблоны формирования сообщений.
Шаблоны формирования сообщений размещены в:
/strings/message_schema.yaml
В шаблоне для каждого сочетания типа и вида действий (атрибуты type, action , объекта WebHook) определены имена строк, из которых формируется итоговое сообщение. Строки сгруппированы в отдельные списки.
При формировании выходного сообщения строки, а также, дополнительно, группы, разделяются между собой оператором переноса строки.
При редактировании шаблонов важно учесть отсутствие проверки наличия полей в WebHook для конкретного объекта (например поле due_date отсутствует в WebHook для Wiki). Попытка наполнить данным полем сообщение, для объекта его не содержащего, завершится ошибкой выполнения функции, так как в функции get_message отсутствует контроль правильности составления шаблона.
Пример шаблона для объекта Epic (тип объекта - epic, вид действий - create, change, delete, группа полей - [имя_поля_1, имя_поля_2…]):
epic:
create:
- ["action", "object_of_action"]
- ["parents"]
- ["timestamp", "by_fullname", "assigned_to"]
- ["tags"]
change:
- ["action", "object_of_action"]
- ["parents"]
- ["timestamp", "by_fullname", "assigned_to"]
- ["change"]
- ["tags"]
delete:
- ["action", "object_of_action"]
- ["parents"]
- ["timestamp", "by_fullname", "assigned_to"]
- ["tags"]
Подробнее о именах полей шаблона и их соответствии поля в WebHook можно узнать в описании функции get_string.
Словарь шаблонов строк.
Для поддержки мультиязычности сформирован словарь шаблонов строк для построения выходных строк/сообщений.
Словарь размещен в:
/strings/webhook_notifications.yaml
Словарь имеет структура вида:
ключ языка:
имя шаблона:
шаблон с возможностью дополнения {переменными}
Образец:
ru:
action_string: |
🆕 Событие: {action} объекта.
action_userstory_from_task_string: |
🆕 Событие: Преобразование задачи в пользовательскую историю.
action_userstory_from_issue_string: |
🆕 Событие: Создание новой пользовательской истории из запроса.