def render_message_template()

in src/dispatch/messaging/strings.py [0:0]


def render_message_template(message_template: List[dict], **kwargs):
    """Renders the jinja data included in the template itself."""
    data = []
    new_copy = copy.deepcopy(message_template)
    for d in new_copy:
        if d.get("header"):
            d["header"] = env.from_string(d["header"]).render(**kwargs)

        if d.get("title"):
            d["title"] = env.from_string(d["title"]).render(**kwargs)

        if d.get("title_link"):
            d["title_link"] = env.from_string(d["title_link"]).render(**kwargs)

            if d["title_link"] == "None":  # skip blocks with no content
                continue

            # skip blocks that do not have new links rendered, as no real value was provided
            if not d["title_link"]:
                continue

        if d.get("text"):
            d["text"] = env.from_string(d["text"]).render(**kwargs)

            # NOTE: we truncate the string to 2500 characters
            # to prevent hitting limits on SaaS integrations (e.g. Slack)
            d["text"] = d["text"] if len(d["text"]) <= 2500 else d["text"][:2500]

        # render a new button array given the template
        if d.get("buttons"):
            for button in d["buttons"]:
                button["button_text"] = env.from_string(button["button_text"]).render(**kwargs)
                button["button_value"] = env.from_string(button["button_value"]).render(**kwargs)

                if button.get("button_action"):
                    button["button_action"] = env.from_string(button["button_action"]).render(
                        **kwargs
                    )

                if button.get("button_url"):
                    button["button_url"] = env.from_string(button["button_url"]).render(**kwargs)

        # render drop-down list
        if select := d.get("select"):
            if placeholder := select.get("placeholder"):
                select["placeholder"] = env.from_string(placeholder).render(**kwargs)

            select["select_action"] = env.from_string(select["select_action"]).render(**kwargs)

            for option in select["options"]:
                option["option_text"] = env.from_string(option["option_text"]).render(**kwargs)
                option["option_value"] = env.from_string(option["option_value"]).render(**kwargs)

        if d.get("visibility_mapping"):
            d["text"] = d["visibility_mapping"][kwargs["visibility"]]

        if d.get("status_mapping"):
            d["text"] = d["status_mapping"][kwargs["status"]]

        if d.get("datetime"):
            d["datetime"] = env.from_string(d["datetime"]).render(**kwargs)

        if d.get("context"):
            d["context"] = env.from_string(d["context"]).render(**kwargs)

        data.append(d)

    return data