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