Описание модуля.

Модуль предназначен для получения текстового сообщения из объекта класса 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: |
    🆕 Событие: Создание новой пользовательской истории из запроса.