def test_as_html(): # str case assert format_html('{}', as_html(part='foo', context={})) == 'foo' assert format_html('{}', as_html(part='<foo>bar</foo>', context={})) == '<foo>bar</foo>' assert format_html('{}', as_html(part=mark_safe('<foo>bar</foo>'), context={})) == '<foo>bar</foo>' # Template case request = req('get') assert format_html( '{}', as_html(request=request, part=Template('foo'), context={})) == 'foo' assert format_html( '{}', as_html(request=request, part=Template('<foo>bar</foo>'), context={})) == '<foo>bar</foo>' # __html__ attribute case assert format_html( '{}', as_html(part=Struct(__html__=lambda: 'foo'), context={})) == 'foo' assert format_html( '{}', as_html(part=Struct(__html__=lambda: '<foo>bar</foo>'), context={})) == '<foo>bar</foo>' assert format_html( '{}', as_html(part=Struct(__html__=lambda: mark_safe('<foo>bar</foo>')), context={})) == '<foo>bar</foo>'
def render_text_or_children(self, context): request = self.get_request() return format_html( '{}' * len(self.children), *[ as_html(part=x, context=context, request=request) for x in values(self.children) ])
def __html__(self, *, render=None): self.context = evaluate_strict_container( self.context or {}, **self.iommi_evaluate_parameters()) request = self.get_request() rendered = { 'h_tag': as_html(request=request, part=self.h_tag, context=self.iommi_evaluate_parameters()) } rendered.update({ name: as_html(request=request, part=part, context=self.iommi_evaluate_parameters()) for name, part in items(self.parts) }) return render(rendered)
def test_as_html_integer(): assert as_html(part=123, context={}) == '123'
def render_text_or_children(self, context): assert not isinstance(context, RequestContext) return format_html( '{}' * len(self.children), *[as_html(part=x, context=context) for x in values(self.children)])