from typing import Any from django.conf import settings from django.contrib.staticfiles.storage import staticfiles_storage from django.template.defaultfilters import pluralize, slugify from django.urls import reverse from django.utils import translation from django.utils.timesince import timesince from jinja2 import Environment from two_factor.templatetags.two_factor import device_action from zerver.templatetags.app_filters import display_list, render_markdown_path, webpack_entry def environment(**options: Any) -> Environment: env = Environment(**options) env.globals.update( default_page_params={ "debug_mode": settings.DEBUG, "webpack_public_path": staticfiles_storage.url(settings.WEBPACK_BUNDLES), }, static=staticfiles_storage.url, url=reverse, render_markdown_path=render_markdown_path, webpack_entry=webpack_entry, ) env.install_gettext_translations(translation, True) env.filters["slugify"] = slugify env.filters["pluralize"] = pluralize env.filters["display_list"] = display_list env.filters["device_action"] = device_action env.filters["timesince"] = timesince return env