Code

Ticket #3512: html_class1.diff

File html_class1.diff, 2.5 KB (added by Waylan Limberg <waylan@…>, 7 years ago)

Simple solution, easy to override, but could result in &lt;tr class=&quot;&quot;&gt;

Line 
1Index: forms.py
2===================================================================
3--- forms.py    (revision 4528)
4+++ forms.py    (working copy)
5@@ -119,6 +119,12 @@
6                     top_errors.extend(['(Hidden field %s) %s' % (name, e) for e in bf_errors])
7                 hidden_fields.append(unicode(bf))
8             else:
9+                if bf_errors:
10+                    html_class = 'error '
11+                else:
12+                    html_class = ''
13+                if bf.field.required:
14+                    html_class += 'required'
15                 if errors_on_separate_row and bf_errors:
16                     output.append(error_row % bf_errors)
17                 label = bf.label and bf.label_tag(escape(bf.label + ':')) or ''
18@@ -126,7 +132,7 @@
19                     help_text = help_text_html % field.help_text
20                 else:
21                     help_text = u''
22-                output.append(normal_row % {'errors': bf_errors, 'label': label, 'field': unicode(bf), 'help_text': help_text})
23+                output.append(normal_row % {'errors': bf_errors, 'label': label, 'field': unicode(bf), 'help_text': help_text, 'html_class': html_class.strip() })
24         if top_errors:
25             output.insert(0, error_row % top_errors)
26         if hidden_fields: # Insert any hidden fields in the last row.
27@@ -141,15 +147,15 @@
28 
29     def as_table(self):
30         "Returns this form rendered as HTML <tr>s -- excluding the <table></table>."
31-        return self._html_output(u'<tr><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>', u'<tr><td colspan="2">%s</td></tr>', '</td></tr>', u'<br />%s', False)
32+        return self._html_output(u'<tr class="%(html_class)s"><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>', u'<tr><td colspan="2">%s</td></tr>', '</td></tr>', u'<br />%s', False)
33 
34     def as_ul(self):
35         "Returns this form rendered as HTML <li>s -- excluding the <ul></ul>."
36-        return self._html_output(u'<li>%(errors)s%(label)s %(field)s%(help_text)s</li>', u'<li>%s</li>', '</li>', u' %s', False)
37+        return self._html_output(u'<li class="%(html_class)s">%(errors)s%(label)s %(field)s%(help_text)s</li>', u'<li>%s</li>', '</li>', u' %s', False)
38 
39     def as_p(self):
40         "Returns this form rendered as HTML <p>s."
41-        return self._html_output(u'<p>%(label)s %(field)s%(help_text)s</p>', u'<p>%s</p>', '</p>', u' %s', True)
42+        return self._html_output(u'<p class="%(html_class)s">%(label)s %(field)s%(help_text)s</p>', u'<p>%s</p>', '</p>', u' %s', True)
43 
44     def non_field_errors(self):
45         """