diff --git a/bootstrapform/templates/bootstrapform/field.html b/bootstrapform/templates/bootstrapform/field.html index bfbdf64..ea7d607 100644 --- a/bootstrapform/templates/bootstrapform/field.html +++ b/bootstrapform/templates/bootstrapform/field.html @@ -44,6 +44,27 @@

{% endif %} + {% elif field|is_email and classes.domain %} + {% if field.auto_id %} + + {% endif %} + +
+
+ {{ field }} + {{ classes.domain }} +
+ + {% for error in field.errors %} + {{ error }} + {% endfor %} + + {% if field.help_text %} +

+ {{ field.help_text|safe }} +

+ {% endif %} +
{% else %} {% if field.auto_id %} diff --git a/bootstrapform/templatetags/bootstrap.py b/bootstrapform/templatetags/bootstrap.py index a8b96de..f4f8923 100644 --- a/bootstrapform/templatetags/bootstrap.py +++ b/bootstrapform/templatetags/bootstrap.py @@ -9,20 +9,26 @@ @register.filter def bootstrap(element): - markup_classes = {'label': '', 'value': '', 'single_value': ''} + markup_classes = {'label': '', 'value': '', 'single_value': '', 'domain': ''} return render(element, markup_classes) +@register.filter +def bootstrap_email(element, domain='example.com'): + markup_classes = {'label': '', 'value': '', 'single_value': '', 'domain': domain} + element.field.widget.attrs.update({'aria-describedby' : element.id_for_label + '-addon'}) + element.field.widget.attrs.update({'class' : 'form-control' }) + return render(element, markup_classes) @register.filter def bootstrap_inline(element): - markup_classes = {'label': 'sr-only', 'value': '', 'single_value': ''} + markup_classes = {'label': 'sr-only', 'value': '', 'single_value': '', 'domain': ''} return render(element, markup_classes) @register.filter def bootstrap_horizontal(element, label_cols='col-sm-2 col-lg-2'): - markup_classes = {'label': label_cols, 'value': '', 'single_value': ''} + markup_classes = {'label': label_cols, 'value': '', 'single_value': '', 'domain': ''} for cl in label_cols.split(' '): splitted_class = cl.split('-') @@ -48,7 +54,8 @@ def bootstrap_horizontal(element, label_cols='col-sm-2 col-lg-2'): @register.filter def add_input_classes(field): if not is_checkbox(field) and not is_multiple_checkbox(field) \ - and not is_radio(field) and not is_file(field): + and not is_radio(field) and not is_file(field) \ + and not is_email(field): field_classes = field.field.widget.attrs.get('class', '') field_classes += ' form-control' field.field.widget.attrs['class'] = field_classes @@ -79,6 +86,10 @@ def render(element, markup_classes): return template.render(context) +@register.filter +def is_email(field): + return isinstance(field.field.widget, forms.EmailInput) + @register.filter def is_checkbox(field):