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 def environment(**options: Any) -> Environment: env = Environment(**options) env.globals.update({ 'default_page_params': { 'debug_mode': False, 'webpack_public_path': staticfiles_storage.url( settings.WEBPACK_LOADER['DEFAULT']['BUNDLE_DIR_NAME'], ), }, 'static': staticfiles_storage.url, 'url': reverse, 'render_markdown_path': render_markdown_path, }) 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