mirror of https://github.com/zulip/zulip.git
Annotate zproject/jinja2/backends.py
This commit is contained in:
parent
60f30fdb36
commit
25f70ebdaa
|
@ -1,6 +1,8 @@
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
from typing import Any, Optional, Union
|
||||||
|
from six import text_type
|
||||||
|
|
||||||
import jinja2
|
import jinja2
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
@ -9,6 +11,7 @@ from django.template.backends import jinja2 as django_jinja2
|
||||||
from django.template import TemplateDoesNotExist, TemplateSyntaxError, Context
|
from django.template import TemplateDoesNotExist, TemplateSyntaxError, Context
|
||||||
from django.utils.module_loading import import_string
|
from django.utils.module_loading import import_string
|
||||||
from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy
|
from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy
|
||||||
|
from django.http import HttpRequest
|
||||||
|
|
||||||
|
|
||||||
class Jinja2(django_jinja2.Jinja2):
|
class Jinja2(django_jinja2.Jinja2):
|
||||||
|
@ -20,6 +23,7 @@ class Jinja2(django_jinja2.Jinja2):
|
||||||
the `Template` object.
|
the `Template` object.
|
||||||
"""
|
"""
|
||||||
def __init__(self, params, *args, **kwargs):
|
def __init__(self, params, *args, **kwargs):
|
||||||
|
# type: (Dict[str, Any], *Any, **Any) -> None
|
||||||
# We need to remove `context_processors` from `OPTIONS` because
|
# We need to remove `context_processors` from `OPTIONS` because
|
||||||
# `Environment` doesn't expect it
|
# `Environment` doesn't expect it
|
||||||
self.context_processors = params['OPTIONS'].pop('context_processors', [])
|
self.context_processors = params['OPTIONS'].pop('context_processors', [])
|
||||||
|
@ -27,6 +31,7 @@ class Jinja2(django_jinja2.Jinja2):
|
||||||
super(Jinja2, self).__init__(params, *args, **kwargs)
|
super(Jinja2, self).__init__(params, *args, **kwargs)
|
||||||
|
|
||||||
def get_template(self, template_name):
|
def get_template(self, template_name):
|
||||||
|
# type: (str) -> Template
|
||||||
try:
|
try:
|
||||||
return Template(self.env.get_template(template_name),
|
return Template(self.env.get_template(template_name),
|
||||||
self.context_processors,
|
self.context_processors,
|
||||||
|
@ -47,16 +52,24 @@ class Template(django_jinja2.Template):
|
||||||
function.
|
function.
|
||||||
"""
|
"""
|
||||||
def __init__(self, template, context_processors, debug, *args, **kwargs):
|
def __init__(self, template, context_processors, debug, *args, **kwargs):
|
||||||
|
# type: (str, List[str], bool, *Any, **Any) -> None
|
||||||
self.context_processors = context_processors
|
self.context_processors = context_processors
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
super(Template, self).__init__(template, *args, **kwargs)
|
super(Template, self).__init__(template, *args, **kwargs)
|
||||||
|
|
||||||
def render(self, context=None, request=None):
|
def render(self, context=None, request=None):
|
||||||
|
# type: (Optional[Union[Dict[str, Any], Context]], Optional[HttpRequest]) -> text_type
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
|
|
||||||
if isinstance(context, Context):
|
if isinstance(context, Context):
|
||||||
context = context.flatten() # Jinja2 expects a dictionary
|
# Jinja2 expects a dictionary
|
||||||
|
# This condition makes sure that `flatten` is called only when
|
||||||
|
# `context` is an instance of `Context`.
|
||||||
|
#
|
||||||
|
# Note: If we don't ignore then mypy complains about missing
|
||||||
|
# `flatten` attribute in some members of union.
|
||||||
|
context = context.flatten() # type: ignore
|
||||||
|
|
||||||
if request is not None:
|
if request is not None:
|
||||||
context['request'] = request
|
context['request'] = request
|
||||||
|
|
Loading…
Reference in New Issue