def render(self, context):
        self.filter_expression.var.translate = not self.noop
        if self.message_context:
            self.filter_expression.var.message_context = (
                self.message_context.resolve(context))
        output = self.filter_expression.resolve(context)
        value = render_value_in_context(output, context)
        # Restore percent signs. Percent signs in template text are doubled
        # so they are not interpreted as string format flags.
        is_safe = isinstance(value, SafeData)
        value = value.replace('%%', '%')

        formatvalues = []
        for formatvalue in self.formatvalues:
            try:
                variable = Variable(formatvalue)
                formatvalues.append(variable.resolve(context))
            except VariableDoesNotExist:
                formatvalues.append(formatvalue)

        value = value.format(*formatvalues)

        value = mark_safe(value) if is_safe else value
        if self.asvar:
            context[self.asvar] = value
            return ''
        else:
            return value
Example #2
0
 def render(self, context):
     for var in self.vars:
         value = var.resolve(context, True)
         if value:
             if not self.escape:
                 value = mark_safe(value)
             return render_value_in_context(value, context)
     return ''
Example #3
0
 def render(self, context):
     for var in self.vars:
         value = var.resolve(context, True)
         if value:
             if not self.escape:
                 value = mark_safe(value)
             return render_value_in_context(value, context)
     return ''
Example #4
0
 def render(self, context):
     if self not in context.render_context:
         # First time the node is rendered in template
         context.render_context[self] = itertools_cycle(self.cyclevars)
     cycle_iter = context.render_context[self]
     value = next(cycle_iter).resolve(context)
     if self.variable_name:
         context[self.variable_name] = value
     if self.silent:
         return ''
     return render_value_in_context(value, context)
Example #5
0
File: i18n.py Project: 912/M-new
 def render(self, context):
     self.filter_expression.var.translate = not self.noop
     if self.message_context:
         self.filter_expression.var.message_context = self.message_context.resolve(context)
     output = self.filter_expression.resolve(context)
     value = render_value_in_context(output, context)
     if self.asvar:
         context[self.asvar] = value
         return ""
     else:
         return value
Example #6
0
 def render(self, context):
     if self not in context.render_context:
         # First time the node is rendered in template
         context.render_context[self] = itertools_cycle(self.cyclevars)
     cycle_iter = context.render_context[self]
     value = next(cycle_iter).resolve(context)
     if self.variable_name:
         context[self.variable_name] = value
     if self.silent:
         return ''
     return render_value_in_context(value, context)
Example #7
0
 def render(self, context):
     self.filter_expression.var.translate = not self.noop
     if self.message_context:
         self.filter_expression.var.message_context = (
             self.message_context.resolve(context))
     output = self.filter_expression.resolve(context)
     value = render_value_in_context(output, context)
     if self.asvar:
         context[self.asvar] = value
         return ''
     else:
         return value
Example #8
0
 def render(self, context):
     self.filter_expression.var.translate = not self.noop
     if self.message_context:
         self.filter_expression.var.message_context = (
             self.message_context.resolve(context))
     output = self.filter_expression.resolve(context)
     value = render_value_in_context(output, context)
     if self.asvar:
         context[self.asvar] = PhraseDelegate(value, self.trimmed)
         return ''
     else:
         delegate = PhraseDelegate(self.filter_expression.var, self.trimmed)
         return delegate
Example #9
0
 def render(self, context):
     self.filter_expression.var.translate = not self.noop
     if self.message_context:
         self.filter_expression.var.message_context = (
             self.message_context.resolve(context))
     output = self.filter_expression.resolve(context)
     value = render_value_in_context(output, context)
     if self.asvar:
         context[self.asvar] = PhraseDelegate(value)
         return ''
     else:
         delegate = PhraseDelegate(value)
         return delegate
Example #10
0
 def render(self, context):
     self.filter_expression.var.translate = not self.noop
     if self.message_context:
         self.filter_expression.var.message_context = (
             self.message_context.resolve(context))
     output = self.filter_expression.resolve(context)
     value = render_value_in_context(output, context)
     # Restore percent signs. Percent signs in template text are doubled
     # so they are not interpreted as string format flags.
     is_safe = isinstance(value, SafeData)
     value = value.replace('%%', '%')
     value = mark_safe(value) if is_safe else value
     if self.asvar:
         context[self.asvar] = value
         return ''
     else:
         return value
Example #11
0
    def render(self, context, nested=False):
        if self.message_context:
            message_context = self.message_context.resolve(context)
        else:
            message_context = None
        tmp_context = {}
        for var, val in self.extra_context.items():
            tmp_context[var] = val.resolve(context)
        # Update() works like a push(), so corresponding context.pop() is at
        # the end of function
        context.update(tmp_context)
        singular, vars = self.render_token_list(self.singular)
        if self.plural and self.countervar and self.counter:
            count = self.counter.resolve(context)
            context[self.countervar] = count
            plural, plural_vars = self.render_token_list(self.plural)
            if message_context:
                result = translation.npgettext(message_context, singular,
                                               plural, count)
            else:
                result = translation.ungettext(singular, plural, count)
            vars.extend(plural_vars)
        else:
            if message_context:
                result = translation.pgettext(message_context, singular)
            else:
                # result = translation.ugettext(singular)
                result = PhraseDelegate(singular)
        default_value = settings.TEMPLATE_STRING_IF_INVALID
        render_value = lambda v: render_value_in_context(
            context.get(v, default_value), context)
        data = dict([(v, render_value(v)) for v in vars])
        context.pop()

        # FIX
        # try:
        #     result = result % data
        # except (KeyError, ValueError):
        #     if nested:
        #         # Either string is malformed, or it's a bug
        #         raise TemplateSyntaxError("'blocktrans' is unable to format "
        #             "string returned by gettext: %r using %r" % (result, data))
        #     with translation.override(None):
        #         result = self.render(context, nested=True)

        return result
Example #12
0
    def render(self, context):
        if self not in context.render_context:
            context.render_context[self] = self.conditional_outputs
        conditional_outputs = context.render_context[self]

        try:
            conditional_variable_value = self.conditional_variable.resolve(context)
            if self.passes_condition(conditional_variable_value) and not self.condition_met:
                value = conditional_outputs[0].resolve(context)
                self.condition_met = True
            else:
                value = conditional_outputs[1].resolve(context)
            return render_value_in_context(value, context)

        except template.VariableDoesNotExist:
            # fail silently...
            return
Example #13
0
    def render(self, context, nested=False):
        if self.message_context:
            message_context = self.message_context.resolve(context)
        else:
            message_context = None
        tmp_context = {}
        for var, val in self.extra_context.items():
            tmp_context[var] = val.resolve(context)
        # Update() works like a push(), so corresponding context.pop() is at
        # the end of function
        context.update(tmp_context)
        singular, vars = self.render_token_list(self.singular)
        if self.plural and self.countervar and self.counter:
            count = self.counter.resolve(context)
            context[self.countervar] = count
            plural, plural_vars = self.render_token_list(self.plural)
            if message_context:
                result = translation.npgettext(message_context, singular,
                                               plural, count)
            else:
                result = translation.ungettext(singular, plural, count)
            vars.extend(plural_vars)
        else:
            if message_context:
                result = translation.pgettext(message_context, singular)
            else:
                # result = translation.ugettext(singular)
                result = PhraseDelegate(singular)
        default_value = settings.TEMPLATE_STRING_IF_INVALID
        render_value = lambda v: render_value_in_context(
            context.get(v, default_value), context)
        data = dict([(v, render_value(v)) for v in vars])
        context.pop()

        # FIX
        # try:
        #     result = result % data
        # except (KeyError, ValueError):
        #     if nested:
        #         # Either string is malformed, or it's a bug
        #         raise TemplateSyntaxError("'blocktrans' is unable to format "
        #             "string returned by gettext: %r using %r" % (result, data))
        #     with translation.override(None):
        #         result = self.render(context, nested=True)

        return result
Example #14
0
 def render(self, context):
     self.filter_expression.var.translate = not self.noop
     if self.message_context:
         self.filter_expression.var.message_context = (
             self.message_context.resolve(context))
     output = self.filter_expression.resolve(context)
     value = render_value_in_context(output, context)
     # Restore percent signs. Percent signs in template text are doubled
     # so they are not interpreted as string format flags.
     is_safe = isinstance(value, SafeData)
     value = value.replace('%%', '%')
     value = mark_safe(value) if is_safe else value
     if self.asvar:
         context[self.asvar] = value
         return ''
     else:
         return value
Example #15
0
    def render(self, context):
        if self not in context.render_context:
            context.render_context[self] = itertools_cycle(self.cycle_values)
        cycle_iter = context.render_context[self]

        try:
            conditional_variable_value = self.conditional_variable.resolve(context)
            if self.passes_condition(conditional_variable_value):
                value = next(cycle_iter).resolve(context)
                self.last_cycle_value = value
            else:
                if self.last_cycle_value is None:
                    self.last_cycle_value = next(cycle_iter).resolve(context)
                value = self.last_cycle_value
            return render_value_in_context(value, context)

        except template.VariableDoesNotExist:
            # fail silently...
            return
Example #16
0
 def render_value(key):
     if key in context:
         val = context[key]
     else:
         val = default_value % key if '%s' in default_value else default_value
     return render_value_in_context(val, context)
Example #17
0
def variable_node_render(self, context):
    """
    Like VariableNode.render, but doesn't catch UnicodeDecodeError.
    """
    output = self.filter_expression.resolve(context)
    return render_value_in_context(output, context)
Example #18
0
 def render(self, context):
     for var in self.vars:
         value = var.resolve(context, True)
         if value:
             return render_value_in_context(value, context)
     return ''
Example #19
0
 def render_value(key):
     if key in context:
         val = context[key]
     else:
         val = default_value % key if '%s' in default_value else default_value
     return render_value_in_context(val, context)
Example #20
0
from __future__ import unicode_literals
Example #21
0
 def value_renderer(value):
     if isinstance(value, (Number, datetime.date)):
         return value
     return render_value_in_context(value,
                                    context=value_rendering_context)
Example #22
0
 def render(self, context):
     for var in self.vars:
         value = var.resolve(context, True)
         if value:
             return render_value_in_context(value, context)
     return ''