def fragment__render(fragment, context): if not fragment.include: return '' rendered_children = fragment.render_text_or_children(context=context) if fragment.template: return render_template(fragment.get_request(), fragment.template, dict(**context, **fragment.iommi_evaluate_parameters(), rendered_children=rendered_children)) is_void_element = fragment.tag in _void_elements if fragment.tag: if rendered_children: assert not is_void_element, f'{fragment.tag} is a void element, but it has children: {rendered_children}' return format_html( '<{tag}{attrs}>{children}</{tag}>', tag=fragment.tag, attrs=render_attrs(fragment.attrs), children=rendered_children, ) else: return format_html( '<{tag}{attrs}>' if is_void_element else '<{tag}{attrs}></{tag}>', tag=fragment.tag, attrs=render_attrs(fragment.attrs), ) else: return format_html( '{}', rendered_children, )
def fragment__render(fragment, context): rendered_children = fragment.render_text_or_children(context=context) if fragment.template: return render_template( fragment.request(), fragment.template, { **context, **fragment.evaluate_attribute_kwargs(), rendered_children: rendered_children }) is_void_element = fragment.tag in _void_elements if fragment.tag: if rendered_children: assert not is_void_element return format_html( '<{tag}{attrs}>{children}</{tag}>', tag=fragment.tag, attrs=render_attrs(fragment.attrs), children=rendered_children, ) else: return format_html( '<{tag}{attrs}>' if is_void_element else '<{tag}{attrs}></{tag}>', tag=fragment.tag, attrs=render_attrs(fragment.attrs), ) else: return format_html( '{}', rendered_children, )
def test_format_html4(): form = Form(fields=dict(foo=Field())) form.bind(request=req('get')) actual = render_template(req('get'), Template('{{form}}'), dict(form=form, )) print(actual) assert '<input id="id_foo" name="foo" type="text" value="">' in actual
def render_actions(self): assert self._is_bound, 'The form has not been bound. You need to call bind() either explicitly, or pass data/request to the constructor to cause an indirect bind()' actions, grouped_actions = group_actions(self.actions) return render_template( self.request(), self.actions_template, dict( actions=actions, grouped_actions=grouped_actions, form=self, ))
def render_actions(self): assert self._is_bound, 'The form has not been bound. You need to call bind() before you can render it.' non_grouped_actions, grouped_actions = group_actions(self.actions) return render_template( self.get_request(), self.actions_template, dict( actions=self.iommi_bound_members().actions, non_grouped_actions=non_grouped_actions, grouped_actions=grouped_actions, form=self, ))
def __html__(self, *, render=None): assert not render if self.is_boolean: if 'checked' not in self.input.attrs and self.value: self.input.attrs.checked = '' else: if 'value' not in self.input.attrs: self.input.attrs.value = self.rendered_value if not self.editable: self.non_editable_input.children['text'] = self.rendered_value self.input = self.non_editable_input return render_template(self.get_request(), self.template, self.iommi_evaluate_parameters())
def __html__(self, *, context=None, render=None): assert not render context = { 'form': self.form, 'field': self, } # TODO: hack! if 'value' not in self.input.attrs: self.input.attrs.value = self.rendered_value if self.template_string is not None: return get_template_from_string(self.template_string, origin='iommi', name='Form.__html__').render( context, self.request()) else: return render_template(self.request(), self.template, context)
def render_template_name(template_name, **kwargs): return render_template(template=template_name, **kwargs)
def test_render_template(): actual = render_template(req('get'), Template('{{foo}}'), dict(foo=1)) print(actual) assert type(actual) == SafeText
def test_format_html3(): assert render_template( req('get'), Template('{{foo}}'), dict(foo=format_html('{}', format_html( '<a href="foo">foo</a>')))) == '<a href="foo">foo</a>'