From 02f690f73838f59cb622031751fd75b82f728b2f Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 5 Jan 2007 00:04:38 +0000 Subject: [PATCH] newforms: Changed Form.ignore_errors to Form.is_bound, which is more descriptive and can be helpful to access at runtime git-svn-id: http://code.djangoproject.com/svn/django/trunk@4286 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/newforms/forms.py | 8 ++++---- tests/regressiontests/forms/tests.py | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/django/newforms/forms.py b/django/newforms/forms.py index f47700f857..d540ec8a2e 100644 --- a/django/newforms/forms.py +++ b/django/newforms/forms.py @@ -40,7 +40,7 @@ class BaseForm(StrAndUnicode): # information. Any improvements to the form API should be made to *this* # class, not to the Form class. def __init__(self, data=None, auto_id='id_%s', prefix=None): - self.ignore_errors = data is None + self.is_bound = data is not None self.data = data or {} self.auto_id = auto_id self.prefix = prefix @@ -73,7 +73,7 @@ class BaseForm(StrAndUnicode): Returns True if the form has no errors. Otherwise, False. If errors are being ignored, returns False. """ - return not self.ignore_errors and not bool(self.errors) + return self.is_bound and not bool(self.errors) def add_prefix(self, field_name): """ @@ -137,7 +137,7 @@ class BaseForm(StrAndUnicode): Cleans all of self.data and populates self.__errors and self.clean_data. """ errors = ErrorDict() - if self.ignore_errors: # Stop further processing. + if not self.is_bound: # Stop further processing. self.__errors = errors return self.clean_data = {} @@ -217,7 +217,7 @@ class BoundField(StrAndUnicode): auto_id = self.auto_id if auto_id and not attrs.has_key('id') and not widget.attrs.has_key('id'): attrs['id'] = auto_id - if self.form.ignore_errors: + if not self.form.is_bound: data = self.field.initial else: data = self.data diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py index 6e2f898645..59519c90be 100644 --- a/tests/regressiontests/forms/tests.py +++ b/tests/regressiontests/forms/tests.py @@ -1502,6 +1502,8 @@ You can pass it data in __init__(), as a dictionary. Pass a dictionary to a Form's __init__(). >>> p = Person({'first_name': u'John', 'last_name': u'Lennon', 'birthday': u'1940-10-9'}) +>>> p.is_bound +True >>> p.errors {} >>> p.is_valid() @@ -1540,6 +1542,8 @@ Birthday 1940-10-9 Empty dictionaries are valid, too. >>> p = Person({}) +>>> p.is_bound +True >>> p.errors {'first_name': [u'This field is required.'], 'last_name': [u'This field is required.'], 'birthday': [u'This field is required.']} >>> p.is_valid() @@ -1569,9 +1573,11 @@ AttributeError: 'birthday' object has no attribute 'clean_data'

If you don't pass any values to the Form's __init__(), or if you pass None, -the Form won't do any validation. Form.errors will be an empty dictionary *but* -Form.is_valid() will return False. +the Form will be considered unbound and won't do any validation. Form.errors +will be an empty dictionary *but* Form.is_valid() will return False. >>> p = Person() +>>> p.is_bound +False >>> p.errors {} >>> p.is_valid()