jinja2: Serialize page-params with orjson.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2021-05-17 14:51:02 -07:00 committed by Tim Abbott
parent 45fb7165b1
commit 79c087471c
1 changed files with 8 additions and 0 deletions

View File

@ -1,5 +1,6 @@
from typing import Any from typing import Any
import orjson
from django.contrib.staticfiles.storage import staticfiles_storage from django.contrib.staticfiles.storage import staticfiles_storage
from django.template.defaultfilters import pluralize, slugify from django.template.defaultfilters import pluralize, slugify
from django.urls import reverse from django.urls import reverse
@ -12,6 +13,10 @@ from zerver.context_processors import DEFAULT_PAGE_PARAMS
from zerver.templatetags.app_filters import display_list, render_markdown_path, webpack_entry from zerver.templatetags.app_filters import display_list, render_markdown_path, webpack_entry
def json_dumps(obj: object) -> str:
return orjson.dumps(obj).decode()
def environment(**options: Any) -> Environment: def environment(**options: Any) -> Environment:
env = Environment(**options) env = Environment(**options)
env.globals.update( env.globals.update(
@ -33,4 +38,7 @@ def environment(**options: Any) -> Environment:
env.filters["device_action"] = device_action env.filters["device_action"] = device_action
env.filters["timesince"] = timesince env.filters["timesince"] = timesince
env.policies["json.dumps_function"] = json_dumps # type: ignore[attr-defined] # type annotation will be fixed in Jinja2 3.0.0
env.policies["json.dumps_kwargs"] = {} # type: ignore[attr-defined] # type annotation will be fixed in Jinja2 3.0.0
return env return env