Preserved context class in inclusion_tag.
Previously, when a template was rendered with RequestContext, inclusion tags were rendered with a plain context, losing additional information available in the RequestContext. The (admittedly bizarre) implementation of RequestContext.new() has the side-effect of not running template context processors, making this change backwards-compatible.
This commit is contained in:
parent
fdbfc98003
commit
e53495ba33
|
@ -1257,7 +1257,7 @@ class Library(object):
|
||||||
else:
|
else:
|
||||||
raise TemplateSyntaxError("Invalid arguments provided to assignment_tag")
|
raise TemplateSyntaxError("Invalid arguments provided to assignment_tag")
|
||||||
|
|
||||||
def inclusion_tag(self, file_name, context_class=Context, takes_context=False, name=None):
|
def inclusion_tag(self, file_name, takes_context=False, name=None):
|
||||||
def dec(func):
|
def dec(func):
|
||||||
params, varargs, varkw, defaults = getargspec(func)
|
params, varargs, varkw, defaults = getargspec(func)
|
||||||
|
|
||||||
|
@ -1277,13 +1277,7 @@ class Library(object):
|
||||||
else:
|
else:
|
||||||
t = context.engine.get_template(file_name)
|
t = context.engine.get_template(file_name)
|
||||||
self.nodelist = t.nodelist
|
self.nodelist = t.nodelist
|
||||||
new_context = context_class(_dict, **{
|
new_context = context.new(_dict)
|
||||||
'autoescape': context.autoescape,
|
|
||||||
'current_app': context.current_app,
|
|
||||||
'use_l10n': context.use_l10n,
|
|
||||||
'use_tz': context.use_tz,
|
|
||||||
'engine': context.engine,
|
|
||||||
})
|
|
||||||
# Copy across the CSRF token, if present, because
|
# Copy across the CSRF token, if present, because
|
||||||
# inclusion tags are often used for forms, and we need
|
# inclusion tags are often used for forms, and we need
|
||||||
# instructions for using CSRF protection to be as simple
|
# instructions for using CSRF protection to be as simple
|
||||||
|
|
Loading…
Reference in New Issue