Author: adrian
Date: 2007-01-04 00:25:53 -0600 (Thu, 04 Jan 2007)
New Revision: 4284

Modified:
  django/trunk/django/newforms/forms.py
  django/trunk/tests/regressiontests/forms/tests.py
Log:
newforms: Changed Form so that clean_data only exists if a Form is valid. 
Thanks for the idea, Honza Kral

Modified: django/trunk/django/newforms/forms.py
===================================================================
--- django/trunk/django/newforms/forms.py       2007-01-04 04:00:16 UTC (rev 
4283)
+++ django/trunk/django/newforms/forms.py       2007-01-04 06:25:53 UTC (rev 
4284)
@@ -44,7 +44,6 @@
        self.data = data or {}
        self.auto_id = auto_id
        self.prefix = prefix
-        self.clean_data = None # Stores the data after clean() has been called.
        self.__errors = None # Stores the errors after clean() has been called.

    def __unicode__(self):
@@ -137,11 +136,11 @@
        """
        Cleans all of self.data and populates self.__errors and self.clean_data.
        """
-        self.clean_data = {}
        errors = ErrorDict()
        if self.ignore_errors: # Stop further processing.
            self.__errors = errors
            return
+        self.clean_data = {}
        for name, field in self.fields.items():
            # value_from_datadict() gets the data from the dictionary.
            # Each widget type knows how to retrieve its own data, because some
@@ -160,7 +159,7 @@
        except ValidationError, e:
            errors[NON_FIELD_ERRORS] = e.messages
        if errors:
-            self.clean_data = None
+            delattr(self, 'clean_data')
        self.__errors = errors

    def clean(self):

Modified: django/trunk/tests/regressiontests/forms/tests.py
===================================================================
--- django/trunk/tests/regressiontests/forms/tests.py   2007-01-04 04:00:16 UTC 
(rev 4283)
+++ django/trunk/tests/regressiontests/forms/tests.py   2007-01-04 06:25:53 UTC 
(rev 4284)
@@ -1544,6 +1544,10 @@
{'first_name': [u'This field is required.'], 'last_name': [u'This field is 
required.'], 'birthday': [u'This field is required.']}
>>> p.is_valid()
False
+>>> p.clean_data
+Traceback (most recent call last):
+...
+AttributeError: 'birthday' object has no attribute 'clean_data'
>>> print p
<tr><th><label for="id_first_name">First name:</label></th><td><ul class="errorlist"><li>This field is 
required.</li></ul><input type="text" name="first_name" id="id_first_name" /></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td><ul class="errorlist"><li>This field is 
required.</li></ul><input type="text" name="last_name" id="id_last_name" /></td></tr>
@@ -1572,6 +1576,10 @@
{}
>>> p.is_valid()
False
+>>> p.clean_data
+Traceback (most recent call last):
+...
+AttributeError: 'birthday' object has no attribute 'clean_data'
>>> print p
<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" 
id="id_first_name" /></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" 
id="id_last_name" /></td></tr>
@@ -1611,8 +1619,9 @@
* birthday
  * This field is required.
>>> p.clean_data
->>> repr(p.clean_data)
-'None'
+Traceback (most recent call last):
+...
+AttributeError: 'birthday' object has no attribute 'clean_data'
>>> p['first_name'].errors
[u'This field is required.']
>>> p['first_name'].errors.as_ul()


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django 
updates" group.
To post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to