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 ''