class IfSecureNode(template.Node): def __init__(self, nodelist_true, nodelist_false): self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false def __repr__(self): return "" def render(self, context): request = context.get('request', None) if request is None: return self.nodelist_false.render(context) if request.is_secure(): return self.nodelist_true.render(context) return self.nodelist_false.render(context) def do_ifsecure(parser, token): bits = list(token.split_contents()) end_tag = 'end' + bits[0] nodelist_true = parser.parse(('else', end_tag)) token = parser.next_token() if token.contents == 'else': nodelist_false = parser.parse((end_tag,)) parser.delete_first_token() else: nodelist_false = template.NodeList() return IfSecureNode(nodelist_true, nodelist_false) @register.tag def ifsecure(parser, token): return do_ifsecure(parser, token) register.tag('ifsecure', ifsecure)