#23 Fix issue #22 : Highlight fields with values not passing validation

Closed
capslock wants to merge 2 commits from capslock/issue-22 into FFDN/django

+ 8 - 0
wifiwithme/apps/contribmap/forms.py

@@ -45,9 +45,17 @@ class PublicContribForm(forms.ModelForm):
             'floor_total': forms.TextInput(
                 attrs={'placeholder': "Nb. d'étages du bâtiment"}),
         }
+
     # Widget rendering is managed by hand in template for orientions.
     orientations = forms.MultipleChoiceField(choices=ORIENTATIONS)
 
+    def __init__(self, *args, **kwargs):
+        super(PublicContribForm, self).__init__(*args, **kwargs)
+        for f in self.errors:
+            field = self.fields[f]
+            classes = ["error", (field.widget.attrs['class'] if 'class' in field.widget.attrs else "")]
+            field.widget.attrs['class'] = classes
+
     _privacy_fieldnames = (
         'privacy_name', 'privacy_email', 'privacy_coordinates',
         'privacy_place_details', 'privacy_comment',

+ 7 - 1
wifiwithme/core/templatetags/bootstrap.py

@@ -10,4 +10,10 @@ def formcontrol(field):
 
     For bootstrap form rendering
     """
-    return field.as_widget(attrs={"class": 'form-control'})
+    css_classes = []
+
+    if 'class' in field.field.widget.attrs:
+        css_classes = field.field.widget.attrs['class']
+
+    css_classes += [ 'form-control' ]
+    return field.as_widget(attrs={"class": " ".join(css_classes)})

+ 4 - 0
wifiwithme/static/main.css

@@ -163,3 +163,7 @@ form > h2:first-child {
         margin-top: 365px
     }
 }
+
+input.error {
+    border-color: #a94442;
+}