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 -~----------~----~----~----~------~----~------~--~---