mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
This results in a substantial performance improvement for all of
Zulip's backend templates.
Changes in templates:
- Change `block.super` to `super()`.
- Remove `load` tag because Jinja2 doesn't support it.
- Use `minified_js()|safe` instead of `{% minified_js %}`.
- Use `compressed_css()|safe` instead of `{% compressed_css %}`.
- `forloop.first` -> `loop.first`.
- Use `{{ csrf_input }}` instead of `{% csrf_token %}`.
- Use `{# ... #}` instead of `{% comment %}`.
- Use `url()` instead of `{% url %}`.
- Use `_()` instead of `{% trans %}` because in Jinja `trans` is a block tag.
- Use `{% trans %}` instead of `{% blocktrans %}`.
- Use `{% raw %}` instead of `{% verbatim %}`.
Changes in tools:
- Check for `trans` block in `check-templates` instead of `blocktrans`
Changes in backend:
- Create custom `render_to_response` function which takes `request` objects
instead of `RequestContext` object. There are two reasons to do this:
1. `RequestContext` is not compatible with Jinja2
2. `RequestContext` in `render_to_response` is deprecated.
- Add Jinja2 related support files in zproject/jinja2 directory. It
includes a custom backend and a template renderer, compressors for js
and css and Jinja2 environment handler.
- Enable `slugify` and `pluralize` filters in Jinja2 environment.
Fixes #620.
23 lines
676 B
Python
23 lines
676 B
Python
"""
|
|
`minified_js` is taken from `zerver.templatetags.minified_js.py`
|
|
"""
|
|
from __future__ import absolute_import # Python 2 only
|
|
|
|
from django.conf import settings
|
|
from django.template import TemplateSyntaxError
|
|
from pipeline.templatetags.compressed import CompressedCSSNode
|
|
|
|
from zerver.templatetags.minified_js import MinifiedJSNode
|
|
|
|
|
|
def compressed_css(package_name):
|
|
return CompressedCSSNode(package_name).render({package_name: package_name})
|
|
|
|
|
|
def minified_js(sourcefile):
|
|
if sourcefile not in settings.JS_SPECS:
|
|
raise TemplateSyntaxError(
|
|
"Invalid argument: no JS file %s".format(sourcefile))
|
|
|
|
return MinifiedJSNode(sourcefile).render({})
|