Code reference › domain › mail

module

pretalx.mail.domain.placeholders

Functions 8

escape_for_html_body(value) -> strsourceHTML-variant escape for untrusted content: HTML-escape tag characters, entity-encode markdown link brackets, and collapse newlines to <br> to keep the surrounding <span> fence intact.
def escape_for_html_body(value) -> str:
    """HTML-variant escape for untrusted content: HTML-escape tag
    characters, entity-encode markdown link brackets, and collapse
    newlines to ``<br>`` to keep the surrounding ``<span>`` fence intact."""
    escaped = conditional_escape(str(value or ""))
    escaped = defuse_markdown_links(escaped)
    return _NEWLINE_RE.sub("<br>", escaped)
escape_for_plain_body(value) -> strsourcePlain-variant escape for untrusted content: strip HTML-tag-like sequences and backslash-escape markdown link metacharacters.
def escape_for_plain_body(value) -> str:
    """Plain-variant escape for untrusted content: strip HTML-tag-like
    sequences and backslash-escape markdown link metacharacters."""
    return defuse_markdown_links(
        _HTML_TAG_LIKE_RE.sub("", str(value or "")), mode=MODE_PLAIN
    )
get_available_placeholders(event, kwargs)source
def get_available_placeholders(event, kwargs):
    params = {}
    for _recv, placeholders in register_mail_placeholders.send(sender=event):
        placeholder_list = (
            placeholders if isinstance(placeholders, (list, tuple)) else [placeholders]
        )
        for placeholder in placeholder_list:
            if all(required in kwargs for required in placeholder.required_context):
                params[placeholder.identifier] = placeholder
    return params
get_invalid_placeholders(text, valid_placeholders)source
def get_invalid_placeholders(text, valid_placeholders):
    return get_used_placeholders(text) - set(valid_placeholders)
get_used_placeholders(text)source
def get_used_placeholders(text):
    if not text:
        return set()
    if isinstance(text, str):
        return {element[1] for element in string.Formatter().parse(text) if element[1]}
    if getattr(text, "data", None):
        return get_used_placeholders(text.data)
    if isinstance(text, dict):
        placeholders = set()
        for lang in text.values():
            placeholders |= get_used_placeholders(lang)
        return placeholders
    return set()
placeholders_for_role(event, role)sourceReturn the dict of valid placeholders for role on event.
def placeholders_for_role(event, role):
    """Return the dict of valid placeholders for role on event."""
    extras = {p.identifier: p for p in ROLE_EXTRA_PLACEHOLDERS.get(role, [])}
    kwargs = PLACEHOLDER_KWARGS.get(role, ["event", "user", "submission", "slot"])
    return get_available_placeholders(event=event, kwargs=kwargs) | extras
placeholders_for_template(template)source
def placeholders_for_template(template):
    return placeholders_for_role(template.event, template.role)
untrusted_plain_value(value) -> pretalx.common.text.formatting.EmailAlternativeStringsourceBuild an EmailAlternativeString for a raw untrusted string.

Use to pass a per-call untrusted value through safe_extra_context when no registered placeholder fits.

def untrusted_plain_value(value) -> EmailAlternativeString:
    """Build an :class:`EmailAlternativeString` for a raw untrusted
    string. Use to pass a per-call untrusted value through
    ``safe_extra_context`` when no registered placeholder fits."""
    return EmailAlternativeString(
        plain=escape_for_plain_body(value),
        html=f"<span>{escape_for_html_body(value)}</span>",
    )