class QuotedEmail(template.Node): def __init__(self, template_name): self.template_name = template_name def render(self, context): return quote_text(render_to_string(self.template_name, context)) @register.tag def quoted_email(parser, token): try: tag_name, template_name = token.split_contents() except ValueError: raise template.TemplateSyntaxError, "%r tag requires a template name" return QuotedEmail(template_name) @register.filter def quote_text(text, level=1): lines = text.split("\n") quoted = "" for line in lines: quoted += "%s%s\n" % ("> " * level, line) return quoted.rstrip()