mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Fixed #23167 -- Added BaseForm.__repr__()
Thanks Keryn Knight for the idea.
This commit is contained in:
		| @@ -134,6 +134,18 @@ class BaseForm(object): | |||||||
|     def __str__(self): |     def __str__(self): | ||||||
|         return self.as_table() |         return self.as_table() | ||||||
|  |  | ||||||
|  |     def __repr__(self): | ||||||
|  |         if self._errors is None: | ||||||
|  |             is_valid = "Unknown" | ||||||
|  |         else: | ||||||
|  |             is_valid = self.is_bound and not bool(self._errors) | ||||||
|  |         return '<%(cls)s bound=%(bound)s, valid=%(valid)s, fields=(%(fields)s)>' % { | ||||||
|  |             'cls': self.__class__.__name__, | ||||||
|  |             'bound': self.is_bound, | ||||||
|  |             'valid': is_valid, | ||||||
|  |             'fields': ';'.join(self.fields), | ||||||
|  |         } | ||||||
|  |  | ||||||
|     def __iter__(self): |     def __iter__(self): | ||||||
|         for name in self.fields: |         for name in self.fields: | ||||||
|             yield self[name] |             yield self[name] | ||||||
|   | |||||||
| @@ -2338,3 +2338,27 @@ class FormsTestCase(TestCase): | |||||||
| <tr><th><label for="id_first_name">First name:</label></th><td><input id="id_first_name" name="first_name" type="text" value="John" /></td></tr> | <tr><th><label for="id_first_name">First name:</label></th><td><input id="id_first_name" name="first_name" type="text" value="John" /></td></tr> | ||||||
| <tr><th><label for="id_last_name">Last name:</label></th><td><input id="id_last_name" name="last_name" type="text" value="Lennon" /></td></tr>""" | <tr><th><label for="id_last_name">Last name:</label></th><td><input id="id_last_name" name="last_name" type="text" value="Lennon" /></td></tr>""" | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|  |     def test_baseform_repr(self): | ||||||
|  |         """ | ||||||
|  |         Test for baseForm method __repr__ | ||||||
|  |         """ | ||||||
|  |         p = Person() | ||||||
|  |         self.assertEqual(repr(p), "<Person bound=False, valid=Unknown, fields=(first_name;last_name;birthday)>") | ||||||
|  |         p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9'}) | ||||||
|  |         self.assertEqual(repr(p), "<Person bound=True, valid=Unknown, fields=(first_name;last_name;birthday)>") | ||||||
|  |         p.is_valid() | ||||||
|  |         self.assertEqual(repr(p), "<Person bound=True, valid=True, fields=(first_name;last_name;birthday)>") | ||||||
|  |         p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': 'fakedate'}) | ||||||
|  |         p.is_valid() | ||||||
|  |         self.assertEqual(repr(p), "<Person bound=True, valid=False, fields=(first_name;last_name;birthday)>") | ||||||
|  |  | ||||||
|  |     def test_baseform_repr_dont_trigger_validation(self): | ||||||
|  |         """ | ||||||
|  |         Test to verify that __repr__ method don't trigger the validation | ||||||
|  |         """ | ||||||
|  |         p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': 'fakedate'}) | ||||||
|  |         repr(p) | ||||||
|  |         self.assertRaises(AttributeError, lambda: p.cleaned_data) | ||||||
|  |         self.assertFalse(p.is_valid()) | ||||||
|  |         self.assertEqual(p.cleaned_data, {'first_name': 'John', 'last_name': 'Lennon'}) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user