Skip to content

Commit 8616253

Browse files
author
R. Kaleta
committed
Handle nested MultiWidgets
1 parent b5b8893 commit 8616253

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

materializecssform/templatetags/materializecss.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,25 +39,22 @@ def materializecss(element, options={}):
3939
return render(element, markup_classes)
4040

4141

42-
def _add_input_classes_widget(widget, errors):
43-
if not _is_checkbox_widget(widget) and not _is_multiple_checkbox_widget(widget) \
42+
def _add_input_classes_widget(widget, field_errors):
43+
if _is_multi_widget(widget):
44+
for subwidget in widget.widgets:
45+
_add_input_classes_widget(subwidget, field_errors)
46+
elif not _is_checkbox_widget(widget) and not _is_multiple_checkbox_widget(widget) \
4447
and not _is_radio_widget(widget) and not _is_file_widget(widget):
4548
classes = widget.attrs.get('class', '')
4649
if config.MATERIALIZECSS_VALIDATION:
4750
classes += ' validate'
48-
if errors:
51+
if field_errors:
4952
classes += ' invalid'
5053
widget.attrs['class'] = classes
5154

5255

5356
def add_input_classes(field):
54-
if not is_checkbox(field) and not is_multiple_checkbox(field) and not is_radio(field) \
55-
and not is_file(field):
56-
if has_multi_widget(field):
57-
for widget in field.field.widget.widgets:
58-
_add_input_classes_widget(widget, field.errors)
59-
else:
60-
_add_input_classes_widget(field.field.widget, field.errors)
57+
_add_input_classes_widget(field.field.widget, field.errors)
6158

6259

6360
def render(element, markup_classes):
@@ -105,6 +102,10 @@ def _is_file_widget(widget):
105102
return isinstance(widget, forms.FileInput)
106103

107104

105+
def _is_multi_widget(widget):
106+
return isinstance(widget, forms.MultiWidget)
107+
108+
108109
@register.filter
109110
def is_checkbox(field):
110111
return isinstance(field.field.widget, forms.CheckboxInput)
@@ -148,8 +149,3 @@ def is_select(field):
148149
@register.filter
149150
def is_select_multiple(field):
150151
return isinstance(field.field.widget, forms.SelectMultiple)
151-
152-
153-
@register.filter
154-
def has_multi_widget(field):
155-
return isinstance(field.field.widget, forms.MultiWidget)

0 commit comments

Comments
 (0)