예제 #1
0
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,
        )
예제 #2
0
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,
        )
예제 #3
0
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
예제 #4
0
 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,
         ))
예제 #5
0
 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,
         ))
예제 #6
0
    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())
예제 #7
0
 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)
예제 #8
0
파일: base.py 프로젝트: OakNinja/iommi
def render_template_name(template_name, **kwargs):
    return render_template(template=template_name, **kwargs)
예제 #9
0
def test_render_template():
    actual = render_template(req('get'), Template('{{foo}}'), dict(foo=1))
    print(actual)
    assert type(actual) == SafeText
예제 #10
0
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>'