Commit 5b1bb402 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Added to each Context a reference to the Engine.

It's only available during the rendering.
parent a2dd0866
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -150,11 +150,19 @@ class Template(object):

    def render(self, context):
        "Display stage -- can be called many times"
        # Set engine attribute here to avoid changing the signature of either
        # Context.__init__ or Node.render. The engine is set only on the first
        # call to render. Further calls e.g. for includes don't override it.
        toplevel_render = context.engine is None
        if toplevel_render:
            context.engine = self.engine
        context.render_context.push()
        try:
            return self._render(context)
        finally:
            context.render_context.pop()
            if toplevel_render:
                context.engine = None


def compile_string(template_string, origin):
@@ -1236,6 +1244,7 @@ class Library(object):
                        '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
                    # inclusion tags are often used for forms, and we need
+4 −3
Original line number Diff line number Diff line
@@ -121,11 +121,12 @@ class BaseContext(object):
class Context(BaseContext):
    "A stack container for variable context"
    def __init__(self, dict_=None, autoescape=True, current_app=None,
            use_l10n=None, use_tz=None):
            use_l10n=None, use_tz=None, engine=None):
        self.autoescape = autoescape
        self.current_app = current_app
        self.use_l10n = use_l10n
        self.use_tz = use_tz
        self.engine = engine
        self.render_context = RenderContext()
        super(Context, self).__init__(dict_)

@@ -186,9 +187,9 @@ class RequestContext(Context):
    using the "processors" keyword argument.
    """
    def __init__(self, request, dict_=None, processors=None, current_app=None,
            use_l10n=None, use_tz=None):
            use_l10n=None, use_tz=None, engine=None):
        Context.__init__(self, dict_, current_app=current_app,
                use_l10n=use_l10n, use_tz=use_tz)
                use_l10n=use_l10n, use_tz=use_tz, engine=engine)
        if processors is None:
            processors = ()
        else: