def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Global functions app.add_template_global(url_for) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') # Filters (indico functions returning UTF8) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(underline) # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext, ngettext, True) # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def _render_template(self, template_name, kwargs): template_dir = os.path.join(get_root_path('indico'), 'legacy/pdfinterface/latex_templates') env = Environment(loader=FileSystemLoader(template_dir), autoescape=False, trim_blocks=True, keep_trailing_newline=True, auto_reload=config.DEBUG, extensions=[LatexEscapeExtension], undefined=StrictUndefined, block_start_string=r'\JINJA{', block_end_string='}', variable_start_string=r'\VAR{', variable_end_string='}', comment_start_string=r'\#{', comment_end_string='}') env.filters['format_date'] = EnsureUnicodeExtension.wrap_func( format_date) env.filters['format_time'] = EnsureUnicodeExtension.wrap_func( format_time) env.filters['format_duration'] = lambda delta: format_human_timedelta( delta, 'minutes') env.filters['latex'] = _latex_escape env.filters['rawlatex'] = RawLatex env.filters['markdown'] = kwargs.pop('markdown') env.globals['_'] = _ env.globals['ngettext'] = ngettext env.globals['session'] = session template = env.get_or_select_template(template_name) distribution = pkg_resources.get_distribution('indico-fonts') font_dir = os.path.join(distribution.location, 'indico_fonts', '') # XXX: trailing slash required return template.render(font_dir=font_dir, **kwargs)
def _render_template(self, template_name, kwargs): template_dir = os.path.join(get_root_path('indico'), 'legacy/pdfinterface/latex_templates') env = Environment(loader=FileSystemLoader(template_dir), autoescape=False, trim_blocks=True, keep_trailing_newline=True, auto_reload=config.DEBUG, extensions=[LatexEscapeExtension], undefined=StrictUndefined, block_start_string=r'\JINJA{', block_end_string='}', variable_start_string=r'\VAR{', variable_end_string='}', comment_start_string=r'\#{', comment_end_string='}') env.filters['format_date'] = EnsureUnicodeExtension.wrap_func(format_date) env.filters['format_time'] = EnsureUnicodeExtension.wrap_func(format_time) env.filters['format_duration'] = lambda delta: format_human_timedelta(delta, 'minutes') env.filters['latex'] = _latex_escape env.filters['rawlatex'] = RawLatex env.filters['markdown'] = kwargs.pop('markdown') env.globals['_'] = _ env.globals['ngettext'] = ngettext env.globals['session'] = session template = env.get_or_select_template(template_name) distribution = pkg_resources.get_distribution('indico-fonts') font_dir = os.path.join(distribution.location, 'indico_fonts', '') # XXX: trailing slash required return template.render(font_dir=font_dir, **kwargs)
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Useful (Python) builtins app.add_template_global(dict) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(iter_form_fields, '_iter_form_fields') app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) app.add_template_global(lambda: unicode(uuid.uuid4()), 'uuid') app.add_template_global(icon_from_mimetype) # Filters (indico functions returning UTF8) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) app.add_template_filter(strip_tags) app.add_template_filter(alpha_enum) # Tests app.add_template_test(instanceof) # only use this test if you really have to! app.add_template_test(subclassof) # only use this test if you really have to! # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) app.add_template_global(lambda: HelperMaKaCInfo.getMaKaCInfoInstance().getLang(), 'get_default_language') # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) # Filters (indico functions returning UTF8) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) # Tests app.add_template_test( instanceof) # only use this test if you really have to! app.add_template_test(equalto) # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) app.add_template_global( lambda: HelperMaKaCInfo.getMaKaCInfoInstance().getLang(), 'get_default_language') # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), "indico_config") app.add_template_global(config.getSystemIconURL, "system_icon") app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, "template_hook") app.add_template_global(is_single_line_field, "_is_single_line_field") app.add_template_global(render_field, "_render_field") app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) # Filters (indico functions returning UTF8) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(lambda d: Markup(html_params(**d)), "html_params") app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) # Tests app.add_template_test(instanceof) # only use this test if you really have to! app.add_template_test(equalto) # i18n app.jinja_env.add_extension("jinja2.ext.i18n") app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) app.add_template_global(lambda: HelperMaKaCInfo.getMaKaCInfoInstance().getLang(), "get_default_language") # webassets app.jinja_env.add_extension("webassets.ext.jinja2.AssetsExtension") app.jinja_env.assets_environment = core_env
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(format_currency) app.add_template_global(get_currency_name) # Filters (indico functions returning UTF8) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) # Tests app.add_template_test(instanceof) # only use this test if you really have to! # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Global functions app.add_template_global(url_for) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') # Filters (indico functions returning UTF8) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(underline) # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext, ngettext, True) # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): app.jinja_env.policies['ext.i18n.trimmed'] = True # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Useful (Python) builtins app.add_template_global(dict) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfig(exc=Exception), 'indico_config') app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(iter_form_fields, '_iter_form_fields') app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_index) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) app.add_template_global(lambda: unicode(uuid.uuid4()), 'uuid') app.add_template_global(icon_from_mimetype) app.add_template_global(render_sidemenu) app.add_template_global(slugify) app.add_template_global(lambda: date_time_util.now_utc(False), 'now') app.add_template_global(render_session_bar) app.add_template_global(get_request_stats) # Global variables app.add_template_global(LocalProxy(get_current_locale), 'current_locale') app.add_template_global( LocalProxy(lambda: current_plugin.manifest if current_plugin else None), 'plugin_webpack') # Useful constants app.add_template_global('^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$', name='time_regex_hhmm') # for input[type=time] # Filters (indico functions returning UTF8) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_number)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(date_time_util.format_pretty_date) app.add_template_filter(date_time_util.format_pretty_datetime) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(html_to_plaintext) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) app.add_template_filter(alpha_enum) app.add_template_filter(crc32) app.add_template_filter(bool) app.add_template_filter(lambda s: Markup(sanitize_html(s or '')), 'sanitize_html') app.add_template_filter(RichMarkup, 'rich_markup') # Tests app.add_template_test( instanceof) # only use this test if you really have to! app.add_template_test( subclassof) # only use this test if you really have to! # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True)
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Useful (Python) builtins app.add_template_global(dict) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(iter_form_fields, '_iter_form_fields') app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_index) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) app.add_template_global(lambda: unicode(uuid.uuid4()), 'uuid') app.add_template_global(icon_from_mimetype) app.add_template_global(render_sidemenu) app.add_template_global(slugify) app.add_template_global(lambda: date_time_util.now_utc(False), 'now') app.add_template_global(render_session_bar) app.add_template_global(lambda: 'custom_js' in core_env, 'has_custom_js') app.add_template_global(lambda: 'custom_sass' in core_env, 'has_custom_sass') app.add_template_global(get_request_stats) # Global variables app.add_template_global(LocalProxy(get_current_locale), 'current_locale') # Useful constants app.add_template_global('^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$', name='time_regex_hhmm') # for input[type=time] # Filters (indico functions returning UTF8) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_number)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(date_time_util.format_pretty_date) app.add_template_filter(date_time_util.format_pretty_datetime) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) app.add_template_filter(strip_tags) app.add_template_filter(alpha_enum) app.add_template_filter(crc32) app.add_template_filter(bool) # Tests app.add_template_test( instanceof) # only use this test if you really have to! app.add_template_test( subclassof) # only use this test if you really have to! # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): app.jinja_env.policies['ext.i18n.trimmed'] = True # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Useful (Python) builtins app.add_template_global(dict) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfig(exc=Exception), 'indico_config') app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(iter_form_fields, '_iter_form_fields') app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_index) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) app.add_template_global(lambda: unicode(uuid.uuid4()), 'uuid') app.add_template_global(icon_from_mimetype) app.add_template_global(render_sidemenu) app.add_template_global(slugify) app.add_template_global(lambda: date_time_util.now_utc(False), 'now') app.add_template_global(render_session_bar) app.add_template_global(lambda: 'custom_js' in core_env, 'has_custom_js') app.add_template_global(lambda: 'custom_sass' in core_env, 'has_custom_sass') app.add_template_global(get_request_stats) # Global variables app.add_template_global(LocalProxy(get_current_locale), 'current_locale') # Useful constants app.add_template_global('^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$', name='time_regex_hhmm') # for input[type=time] # Filters (indico functions returning UTF8) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_number)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(date_time_util.format_pretty_date) app.add_template_filter(date_time_util.format_pretty_datetime) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(html_to_plaintext) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) app.add_template_filter(alpha_enum) app.add_template_filter(crc32) app.add_template_filter(bool) app.add_template_filter(lambda s: Markup(sanitize_html(s or '')), 'sanitize_html') app.add_template_filter(RichMarkup, 'rich_markup') # Tests app.add_template_test(instanceof) # only use this test if you really have to! app.add_template_test(subclassof) # only use this test if you really have to! # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Useful (Python) builtins app.add_template_global(dict) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), 'indico_config') app.add_template_global(config.getSystemIconURL, 'system_icon') app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, 'template_hook') app.add_template_global(is_single_line_field, '_is_single_line_field') app.add_template_global(render_field, '_render_field') app.add_template_global(iter_form_fields, '_iter_form_fields') app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) app.add_template_global(lambda: unicode(uuid.uuid4()), 'uuid') app.add_template_global(icon_from_mimetype) # Filters (indico functions returning UTF8) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter( EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(lambda d: Markup(html_params(**d)), 'html_params') app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) app.add_template_filter(strip_tags) app.add_template_filter(alpha_enum) # Tests app.add_template_test( instanceof) # only use this test if you really have to! app.add_template_test( subclassof) # only use this test if you really have to! # i18n app.jinja_env.add_extension('jinja2.ext.i18n') app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) # webassets app.jinja_env.add_extension('webassets.ext.jinja2.AssetsExtension') app.jinja_env.assets_environment = core_env
def setup_jinja(app): config = Config.getInstance() # Unicode hack app.jinja_env.add_extension(EnsureUnicodeExtension) app.add_template_filter(EnsureUnicodeExtension.ensure_unicode) # Useful (Python) builtins app.add_template_global(dict) # Global functions app.add_template_global(url_for) app.add_template_global(url_for_plugin) app.add_template_global(url_rule_to_js) app.add_template_global(IndicoConfigWrapper(config), "indico_config") app.add_template_global(config.getSystemIconURL, "system_icon") app.add_template_global(include_css_assets) app.add_template_global(include_js_assets) app.add_template_global(include_plugin_css_assets) app.add_template_global(include_plugin_js_assets) app.add_template_global(call_template_hook, "template_hook") app.add_template_global(is_single_line_field, "_is_single_line_field") app.add_template_global(render_field, "_render_field") app.add_template_global(iter_form_fields, "_iter_form_fields") app.add_template_global(format_currency) app.add_template_global(get_currency_name) app.add_template_global(url_for_index) app.add_template_global(url_for_login) app.add_template_global(url_for_logout) app.add_template_global(lambda: unicode(uuid.uuid4()), "uuid") app.add_template_global(icon_from_mimetype) app.add_template_global(render_sidemenu) app.add_template_global(slugify) app.add_template_global(lambda: date_time_util.now_utc(False), "now") # Useful constants app.add_template_global("^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$", name="time_regex_hhmm") # for input[type=time] # Filters (indico functions returning UTF8) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_time)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_datetime)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_human_date)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_timedelta)) app.add_template_filter(EnsureUnicodeExtension.wrap_func(date_time_util.format_number)) # Filters (new ones returning unicode) app.add_template_filter(date_time_util.format_human_timedelta) app.add_template_filter(date_time_util.format_pretty_date) app.add_template_filter(date_time_util.format_pretty_datetime) app.add_template_filter(lambda d: Markup(html_params(**d)), "html_params") app.add_template_filter(underline) app.add_template_filter(markdown) app.add_template_filter(dedent) app.add_template_filter(natsort) app.add_template_filter(groupby) app.add_template_filter(any) app.add_template_filter(strip_tags) app.add_template_filter(alpha_enum) app.add_template_filter(crc32) app.add_template_filter(bool) # Tests app.add_template_test(instanceof) # only use this test if you really have to! app.add_template_test(subclassof) # only use this test if you really have to! # i18n app.jinja_env.add_extension("jinja2.ext.i18n") app.jinja_env.install_gettext_callables(gettext_context, ngettext_context, True) # webassets app.jinja_env.add_extension("webassets.ext.jinja2.AssetsExtension") app.jinja_env.assets_environment = core_env