@@ -39,15 +39,25 @@ 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 ) \
44+ and not _is_radio_widget (widget ) and not _is_file_widget (widget ):
45+ classes = widget .attrs .get ('class' , '' )
46+ if config .MATERIALIZECSS_VALIDATION :
47+ classes += ' validate'
48+ if errors :
49+ classes += ' invalid'
50+ widget .attrs ['class' ] = classes
51+
52+
4253def add_input_classes (field ):
4354 if not is_checkbox (field ) and not is_multiple_checkbox (field ) and not is_radio (field ) \
4455 and not is_file (field ):
45- field_classes = field .field .widget .attrs .get ('class' , '' )
46- if config .MATERIALIZECSS_VALIDATION :
47- field_classes += ' validate'
48- if field .errors :
49- field_classes += ' invalid'
50- field .field .widget .attrs ['class' ] = field_classes
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 )
5161
5262
5363def render (element , markup_classes ):
@@ -79,6 +89,22 @@ def render(element, markup_classes):
7989 return template .render (context )
8090
8191
92+ def _is_checkbox_widget (widget ):
93+ return isinstance (widget , forms .CheckboxInput )
94+
95+
96+ def _is_multiple_checkbox_widget (widget ):
97+ return isinstance (widget , forms .CheckboxSelectMultiple )
98+
99+
100+ def _is_radio_widget (widget ):
101+ return isinstance (widget , forms .RadioSelect )
102+
103+
104+ def _is_file_widget (widget ):
105+ return isinstance (widget , forms .FileInput )
106+
107+
82108@register .filter
83109def is_checkbox (field ):
84110 return isinstance (field .field .widget , forms .CheckboxInput )
@@ -125,5 +151,5 @@ def is_select_multiple(field):
125151
126152
127153@register .filter
128- def is_multi_widget (field ):
154+ def has_multi_widget (field ):
129155 return isinstance (field .field .widget , forms .MultiWidget )
0 commit comments