diff --git a/gadjo/templates/gadjo/form.html b/gadjo/templates/gadjo/form.html index 630ada8..34b89c6 100644 --- a/gadjo/templates/gadjo/form.html +++ b/gadjo/templates/gadjo/form.html @@ -1,34 +1,26 @@ {% load i18n %} -{{ form.non_field_errors }} +{% if form.errors %} +
+

{% trans "There were errors processing your form." %}

+ {% for error in form.non_field_errors %} +

{{ error }}

+ {% endfor %} + {% for field in form %} + {% if field.is_hidden and field.errors %} +

+ {% for error in field.errors %} + {% blocktrans with name=field.name %}(Hidden field {{name}}) {{ error }}{% endblocktrans %} + {% if not forloop.last %}
{% endif %} + {% endfor %} +

+ {% endif %} + {% endfor %} +
+{% endif %} {% for field in form %} {% if field.is_hidden %} - {% if field.errors %} - - {% endif %} {{ field }} - {% endif %} -{% endfor %} -{% for field in form %} - {% if not field.is_hidden %} -

- {{ field.label_tag }} - {% if field.errors %} -

- {% endif %} - {{ field }} - {% if field.help_text %} - {{ field.help_text }} - {% endif %} -

+ {% else %} + {% include "gadjo/widget.html" with field=field %} {% endif %} {% endfor %} diff --git a/gadjo/templates/gadjo/widget.html b/gadjo/templates/gadjo/widget.html new file mode 100644 index 0000000..cde9f9d --- /dev/null +++ b/gadjo/templates/gadjo/widget.html @@ -0,0 +1,33 @@ +
+ {% block widget-title %} +
+ {{ field.label_tag }} + {% if field.field.required %}*{% endif %} +
+ {% endblock %} + {% block widget-content %} +
+ {% block widget-error %} + {% if field.errors %} +
+ {% for error in field.errors %} + {{ error }}{% if not forloop.last %}
{% endif %} + {% endfor %} +
+ {% endif %} + {% endblock %} + {% block widget-control %} + {{ field }} + {% endblock %} + {% block widget-hint %} + {% if field.help_text %} +
{{ field.help_text|safe }}
+ {% endif %} + {% endblock %} +
+ {% endblock %} +
diff --git a/gadjo/templatetags/gadjo.py b/gadjo/templatetags/gadjo.py index caed02f..685de2d 100644 --- a/gadjo/templatetags/gadjo.py +++ b/gadjo/templatetags/gadjo.py @@ -116,3 +116,9 @@ def querystring(parser, token): raise TemplateSyntaxError("Malformed arguments to '%s'" % tag) removals = [parser.compile_filter(bit) for bit in bits] return QuerystringNode(updates, removals) + + +@register.filter +def with_template(form): + form_template = template.loader.get_template('gadjo/form.html') + return form_template.render({'form': form})