class iffchangedNode(template.Node): def __init__(self, parser, condition, true_value, false_value, asvar=None): self.condition = FilterExpression(condition, parser) self.true_value = FilterExpression(true_value, parser) self.false_value = FilterExpression(false_value, parser) self.asvar = asvar def render(self, context): if self not in context.render_context: context.render_context[self] = {'condition': self.condition.resolve(context)} if self.asvar: context[self.asvar] = self.true_value.resolve(context) return self.true_value.resolve(context) else: if context.render_context[self]['condition'] == self.condition.resolve(context): if self.asvar: context[self.asvar] = self.false_value.resolve(context) else: return self.false_value.resolve(context) else: context.render_context[self]['condition'] = self.condition.resolve(context) if self.asvar: context[self.asvar] = self.true_value.resolve(context) else: return self.true_value.resolve(context) return ''
class varNode(template.Node): def __init__(self, parser, value, asvar): self.value = FilterExpression(value, parser) self.asvar = asvar def render(self, context): context[self.asvar] = self.value.resolve(context) return ''