Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Renamed form-specific cleaning methods to be do_clean_*, rather than …

…clean_*.

This avoids a name clash that would occur when you had a form field called
"data" (because clean_data is already a dictionary on the Form class).

Backwards incompatible change.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@5231 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit f15036ae6de5b2a4a6640aeabab16076217e9ea2 1 parent c89dc9c
Malcolm Tredinnick authored
4  django/newforms/forms.py
@@ -184,8 +184,8 @@ def full_clean(self):
184 184
             try:
185 185
                 value = field.clean(value)
186 186
                 self.clean_data[name] = value
187  
-                if hasattr(self, 'clean_%s' % name):
188  
-                    value = getattr(self, 'clean_%s' % name)()
  187
+                if hasattr(self, 'do_clean_%s' % name):
  188
+                    value = getattr(self, 'do_clean_%s' % name)()
189 189
                 self.clean_data[name] = value
190 190
             except ValidationError, e:
191 191
                 errors[name] = e.messages
14  tests/regressiontests/forms/regressions.py
@@ -34,4 +34,18 @@
34 34
 >>> f = SomeForm()
35 35
 >>> f.as_p()
36 36
 u'<p><label for="id_somechoice_0">Somechoice:</label> <ul>\n<li><label><input type="radio" id="id_somechoice_0" value="0" name="somechoice" /> En tied\xe4</label></li>\n<li><label><input type="radio" id="id_somechoice_1" value="1" name="somechoice" /> Mies</label></li>\n<li><label><input type="radio" id="id_somechoice_2" value="2" name="somechoice" /> Nainen</label></li>\n</ul></p>'
  37
+
  38
+#######################
  39
+# Miscellaneous Tests #
  40
+#######################
  41
+
  42
+There once was a problem with Form fields called "data". Let's make sure that
  43
+doesn't come back.
  44
+>>> class DataForm(Form):
  45
+...     data = CharField(max_length=10)
  46
+>>> f = DataForm({'data': 'xyzzy'})
  47
+>>> f.is_valid()
  48
+True
  49
+>>> f.clean_data
  50
+{'data': u'xyzzy'}
37 51
 """
4  tests/regressiontests/forms/tests.py
@@ -2303,7 +2303,7 @@
2303 2303
 Validation errors are HTML-escaped when output as HTML.
2304 2304
 >>> class EscapingForm(Form):
2305 2305
 ...     special_name = CharField()
2306  
-...     def clean_special_name(self):
  2306
+...     def do_clean_special_name(self):
2307 2307
 ...         raise ValidationError("Something's wrong with '%s'" % self.clean_data['special_name'])
2308 2308
 
2309 2309
 >>> f = EscapingForm({'special_name': "Nothing to escape"}, auto_id=False)
@@ -2326,7 +2326,7 @@
2326 2326
 ...    username = CharField(max_length=10)
2327 2327
 ...    password1 = CharField(widget=PasswordInput)
2328 2328
 ...    password2 = CharField(widget=PasswordInput)
2329  
-...    def clean_password2(self):
  2329
+...    def do_clean_password2(self):
2330 2330
 ...        if self.clean_data.get('password1') and self.clean_data.get('password2') and self.clean_data['password1'] != self.clean_data['password2']:
2331 2331
 ...            raise ValidationError(u'Please make sure your passwords match.')
2332 2332
 ...        return self.clean_data['password2']

0 notes on commit f15036a

Please sign in to comment.
Something went wrong with that request. Please try again.