Author: jkocherhans
Date: 2010-02-23 15:09:27 -0600 (Tue, 23 Feb 2010)
New Revision: 12549

Modified:
   django/branches/releases/1.1.X/
   django/branches/releases/1.1.X/django/forms/formsets.py
   django/branches/releases/1.1.X/tests/regressiontests/admin_views/tests.py
   django/branches/releases/1.1.X/tests/regressiontests/forms/formsets.py
Log:
[1.1.x] Fixed #12878. Formset-wide errors are now rendered properly as html. 
Backport of r12548 from trunk.



Property changes on: django/branches/releases/1.1.X
___________________________________________________________________
Name: svnmerge-integrated
   - 
/django/trunk:1-11500,11523,11527-11528,11531-11552,11554,11577,11579-11581,11588-11589,11591-11592,11596-11599,11601-11617,11619-11626,11628-11635,11637-11638,11643-11644,11648-11653,11656,11670,11678,11681,11684,11686,11688,11691,11693,11695,11697,11699,11701,11703,11705,11707,11714,11719,11732,11734,11740,11748,11751,11753,11756,11760,11800,11802,11808,11815,11817,11820,11822,11824,11826,11828,11831,11833,11835,11837,11839,11841,11844,11857,11864,11874,11876,11878,11885,11898,11901,11905,11909,11912,11914,11917,11938,11953,11961,11977,11979,11984,11986,11988,11990,11992,11994,11996,11998,12001,12004,12006,12011,12022,12024,12044-12045,12048,12054-12056,12059,12064,12066,12068,12070,12079,12086,12088,12104,12118,12132,12137-12138,12140-12141,12144,12150-12152,12220-12221,12229,12249,12253,12276,12282,12284,12293,12313,12317-12324,12333,12341,12343,12346,12353,12362,12379,12384,12405,12492,12498,12523,12526,12533,12535,12537,12539,12541
   + 
/django/trunk:1-11500,11523,11527-11528,11531-11552,11554,11577,11579-11581,11588-11589,11591-11592,11596-11599,11601-11617,11619-11626,11628-11635,11637-11638,11643-11644,11648-11653,11656,11670,11678,11681,11684,11686,11688,11691,11693,11695,11697,11699,11701,11703,11705,11707,11714,11719,11732,11734,11740,11748,11751,11753,11756,11760,11800,11802,11808,11815,11817,11820,11822,11824,11826,11828,11831,11833,11835,11837,11839,11841,11844,11857,11864,11874,11876,11878,11885,11898,11901,11905,11909,11912,11914,11917,11938,11953,11961,11977,11979,11984,11986,11988,11990,11992,11994,11996,11998,12001,12004,12006,12011,12022,12024,12044-12045,12048,12054-12056,12059,12064,12066,12068,12070,12079,12086,12088,12104,12118,12132,12137-12138,12140-12141,12144,12150-12152,12220-12221,12229,12249,12253,12276,12282,12284,12293,12313,12317-12324,12333,12341,12343,12346,12353,12362,12379,12384,12405,12492,12498,12523,12526,12533,12535,12537,12539,12541,12548

Modified: django/branches/releases/1.1.X/django/forms/formsets.py
===================================================================
--- django/branches/releases/1.1.X/django/forms/formsets.py     2010-02-23 
20:55:42 UTC (rev 12548)
+++ django/branches/releases/1.1.X/django/forms/formsets.py     2010-02-23 
21:09:27 UTC (rev 12549)
@@ -252,7 +252,7 @@
         try:
             self.clean()
         except ValidationError, e:
-            self._non_form_errors = e.messages
+            self._non_form_errors = self.error_class(e.messages)
 
     def clean(self):
         """

Modified: 
django/branches/releases/1.1.X/tests/regressiontests/admin_views/tests.py
===================================================================
--- django/branches/releases/1.1.X/tests/regressiontests/admin_views/tests.py   
2010-02-23 20:55:42 UTC (rev 12548)
+++ django/branches/releases/1.1.X/tests/regressiontests/admin_views/tests.py   
2010-02-23 21:09:27 UTC (rev 12549)
@@ -10,6 +10,7 @@
 from django.contrib.admin.sites import LOGIN_FORM_KEY
 from django.contrib.admin.util import quote
 from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
+from django.forms.util import ErrorList
 from django.utils.cache import get_max_age
 from django.utils.html import escape
 
@@ -966,6 +967,22 @@
         response = self.client.post('/test_admin/admin/admin_views/person/', 
data)
         self.assertContains(response, "Grace is not a Zombie")
 
+    def test_non_form_errors_is_errorlist(self):
+        # test if non-form errors are correctly handled; ticket #12878
+        data = {
+            "form-TOTAL_FORMS": "1",
+            "form-INITIAL_FORMS": "1",
+            "form-MAX_NUM_FORMS": "0",
+
+            "form-0-id": "2",
+            "form-0-alive": "1",
+            "form-0-gender": "2",
+        }
+        response = self.client.post('/test_admin/admin/admin_views/person/', 
data)
+        non_form_errors = response.context['cl'].formset.non_form_errors()
+        self.assert_(isinstance(non_form_errors, ErrorList))
+        self.assertEqual(str(non_form_errors), str(ErrorList(["Grace is not a 
Zombie"])))
+
     def test_list_editable_ordering(self):
         collector = Collector.objects.create(id=1, name="Frederick Clegg")
 

Modified: django/branches/releases/1.1.X/tests/regressiontests/forms/formsets.py
===================================================================
--- django/branches/releases/1.1.X/tests/regressiontests/forms/formsets.py      
2010-02-23 20:55:42 UTC (rev 12548)
+++ django/branches/releases/1.1.X/tests/regressiontests/forms/formsets.py      
2010-02-23 21:09:27 UTC (rev 12549)
@@ -598,4 +598,20 @@
 >>> formset.management_form.prefix
 'form'
 
+# Regression test for #12878 #################################################
+
+>>> data = {
+...     'drinks-TOTAL_FORMS': '2', # the number of forms rendered
+...     'drinks-INITIAL_FORMS': '0', # the number of forms with initial data
+...     'drinks-MAX_NUM_FORMS': '0', # max number of forms
+...     'drinks-0-name': 'Gin and Tonic',
+...     'drinks-1-name': 'Gin and Tonic',
+... }
+
+>>> formset = FavoriteDrinksFormSet(data, prefix='drinks')
+>>> formset.is_valid()
+False
+>>> print formset.non_form_errors()
+<ul class="errorlist"><li>You may only specify a drink once.</li></ul>
+
 """

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
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