Replace instances of deprecated Jinja2.Markup with markupsafe.Markup (#12289)

Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
This commit is contained in:
Andrew Morgan 2022-03-24 17:16:13 +00:00 committed by GitHub
parent 6b26536a52
commit 8810c93e82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 4 deletions

1
changelog.d/12289.misc Normal file
View file

@ -0,0 +1 @@
Remove uses of the long-deprecated `Jinja2.Markup` which would prevent Synapse from starting with Jinja2 3.1.0 or above installed. This does not affect deployments of Synapse using our Docker images or Debian packages.

View file

@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Dict, Iterable, List, Optional, TypeVar
import bleach import bleach
import jinja2 import jinja2
from markupsafe import Markup
from synapse.api.constants import EventTypes, Membership, RoomTypes from synapse.api.constants import EventTypes, Membership, RoomTypes
from synapse.api.errors import StoreError from synapse.api.errors import StoreError
@ -867,7 +868,7 @@ class Mailer:
) )
def safe_markup(raw_html: str) -> jinja2.Markup: def safe_markup(raw_html: str) -> Markup:
""" """
Sanitise a raw HTML string to a set of allowed tags and attributes, and linkify any bare URLs. Sanitise a raw HTML string to a set of allowed tags and attributes, and linkify any bare URLs.
@ -877,7 +878,7 @@ def safe_markup(raw_html: str) -> jinja2.Markup:
Returns: Returns:
A Markup object ready to safely use in a Jinja template. A Markup object ready to safely use in a Jinja template.
""" """
return jinja2.Markup( return Markup(
bleach.linkify( bleach.linkify(
bleach.clean( bleach.clean(
raw_html, raw_html,
@ -891,7 +892,7 @@ def safe_markup(raw_html: str) -> jinja2.Markup:
) )
def safe_text(raw_text: str) -> jinja2.Markup: def safe_text(raw_text: str) -> Markup:
""" """
Sanitise text (escape any HTML tags), and then linkify any bare URLs. Sanitise text (escape any HTML tags), and then linkify any bare URLs.
@ -901,7 +902,7 @@ def safe_text(raw_text: str) -> jinja2.Markup:
Returns: Returns:
A Markup object ready to safely use in a Jinja template. A Markup object ready to safely use in a Jinja template.
""" """
return jinja2.Markup( return Markup(
bleach.linkify(bleach.clean(raw_text, tags=[], attributes=[], strip=False)) bleach.linkify(bleach.clean(raw_text, tags=[], attributes=[], strip=False))
) )

View file

@ -75,6 +75,7 @@ REQUIREMENTS = [
"attrs>=19.2.0,!=21.1.0", "attrs>=19.2.0,!=21.1.0",
"netaddr>=0.7.18", "netaddr>=0.7.18",
"Jinja2>=2.9", "Jinja2>=2.9",
"MarkupSafe>=2.0",
"bleach>=1.4.3", "bleach>=1.4.3",
# We use `ParamSpec`, which was added in `typing-extensions` 3.10.0.0. # We use `ParamSpec`, which was added in `typing-extensions` 3.10.0.0.
"typing-extensions>=3.10.0", "typing-extensions>=3.10.0",