Projet

Général

Profil

0001-templates-add-as_template-to-render-form-with-extend.patch

Frédéric Péters, 20 janvier 2019 18:00

Télécharger (4,04 ko)

Voir les différences:

Subject: [PATCH] templates: add |as_template to render form with extended
 markup (#29355)

 gadjo/templates/gadjo/form.html   | 48 +++++++++++++------------------
 gadjo/templates/gadjo/widget.html | 33 +++++++++++++++++++++
 gadjo/templatetags/gadjo.py       |  6 ++++
 3 files changed, 59 insertions(+), 28 deletions(-)
 create mode 100644 gadjo/templates/gadjo/widget.html
gadjo/templates/gadjo/form.html
1 1
{% load i18n %}
2
{{ form.non_field_errors }}
2
{% if form.errors %}
3
  <div class="errornotice">
4
    <p>{% trans "There were errors processing your form." %}</p>
5
    {% for error in form.non_field_errors %}
6
    <p>{{ error }}</p>
7
    {% endfor %}
8
    {% for field in form %}
9
      {% if field.is_hidden and field.errors %}
10
        <p>
11
          {% for error in field.errors %}
12
          {% blocktrans with name=field.name %}(Hidden field {{name}}) {{ error }}{% endblocktrans %}
13
          {% if not forloop.last %}<br>{% endif %}
14
          {% endfor %}
15
        </p>
16
      {% endif %}
17
    {% endfor %}
18
  </div>
19
{% endif %}
3 20
{% for field in form %}
4 21
  {% if field.is_hidden %}
5
    {% if field.errors %}
6
      <ul class="errorlist">
7
        {% for error in field.errors %}
8
        <li>
9
          {% blocktrans with name=field.name %}(Hidden field {{name}}) {{ error }}{% endblocktrans %}
10
        </li>
11
        {% endfor %}
12
      </ul>
13
    {% endif %}
14 22
    {{ field }}
15
  {% endif %}
16
{% endfor %}
17
{% for field in form %}
18
  {% if not field.is_hidden %}
19
  <p {% if field.css_classes %}class="{{ field.css_classes }}"{% endif %}>
20
     {{ field.label_tag }}
21
     {% if field.errors %}
22
       <ul class="errorlist">
23
         {% for error in field.errors %}
24
           <li>{{ error }}</li>
25
         {% endfor %}
26
       </ul>
27
     {% endif %}
28
     {{ field }}
29
     {% if field.help_text %}
30
       <span class="helptext">{{ field.help_text }}</span>
31
     {% endif %}
32
  </p>
23
  {% else %}
24
    {% include "gadjo/widget.html" with field=field %}
33 25
  {% endif %}
34 26
{% endfor %}
gadjo/templates/gadjo/widget.html
1
<div class="widget
2
            {{ field.css_classes }}
3
            {% if field.errors %}widget-with-error{% endif %}
4
            {% if field.required %}widget-required{% else %}widget-optional{% endif %}"
5
     id="{{field.id_for_label}}_p">
6
  {% block widget-title %}
7
  <div class="title">
8
    {{ field.label_tag }}
9
    {% if field.field.required %}<span class="required">*</span>{% endif %}
10
  </div>
11
  {% endblock %}
12
  {% block widget-content %}
13
  <div class="content">
14
    {% block widget-error %}
15
    {% if field.errors %}
16
    <div class="error">
17
      {% for error in field.errors %}
18
      {{ error }}{% if not forloop.last %}<br>{% endif %}
19
      {% endfor %}
20
    </div>
21
    {% endif %}
22
    {% endblock %}
23
    {% block widget-control %}
24
    {{ field }}
25
    {% endblock %}
26
    {% block widget-hint %}
27
    {% if field.help_text %}
28
    <div class="hint">{{ field.help_text|safe }}</div>
29
    {% endif %}
30
    {% endblock %}
31
  </div>
32
  {% endblock %}
33
</div>
gadjo/templatetags/gadjo.py
116 116
        raise TemplateSyntaxError("Malformed arguments to '%s'" % tag)
117 117
    removals = [parser.compile_filter(bit) for bit in bits]
118 118
    return QuerystringNode(updates, removals)
119

  
120

  
121
@register.filter
122
def as_template(form):
123
    form_template = template.loader.get_template('gadjo/form.html')
124
    return form_template.render({'form': form})
119
-