def render(self, context): try: obj = self.obj.resolve(context) except template.VariableDoesNotExist: return '' if isinstance(self.field, template.Variable): field = self.field.resolve(context) if not hasattr(obj, field): logger.error("object '%s' has not field '%s' " % (obj, field)) return '' text = get_from_cache(obj, field, safe_mode=True) template_name = 'render-markup-%s-%s' % (self.obj, self.field) return template.Template(text, name=template_name).render(context)
def markdown(obj, arg=''): """ Runs Markdown over a given object property, optionally using safe_mode python-markdown2 supports. Syntax:: {{ obj|markdown:"field [, safe]" }} To enable safe mode, which strips raw HTML and only returns HTML generated by actual Markdown syntax, pass "safe" as the first args in the list. """ args = [e for e in arg.split(",") if e] if len(args) > 0 and hasattr(obj, args[0]): field = getattr(obj, args[0]) if len(args) > 1 and args[1] == "safe": safe_mode = True else: safe_mode = False result = get_from_cache(obj, field, safe_mode=safe_mode) else: return force_unicode(obj) return mark_safe(result)