Commit 69e6045c authored by Tim Graham's avatar Tim Graham
Browse files

[1.8.x] Fixed #25597 -- Fixed crash with SplitArrayField and IntegerField on invalid value.

Backport of 1f07da3e from master
parent 6b631b5c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@ class SplitArrayField(forms.Field):
                errors.append(None)
            except ValidationError as error:
                errors.append(ValidationError(
                    string_concat(self.error_messages['item_invalid'], error.message),
                    string_concat(self.error_messages['item_invalid'], ' '.join(error.messages)),
                    code='item_invalid',
                    params={'nth': i},
                ))
+3 −0
Original line number Diff line number Diff line
@@ -38,3 +38,6 @@ Bugfixes

* Fixed a typo in the name of the `strictly_above` PostGIS lookup
  (:ticket:`25592`).

* Fixed crash with ``contrib.postgres.forms.SplitArrayField`` and
  ``IntegerField`` on invalid value (:ticket:`25597`).
+5 −0
Original line number Diff line number Diff line
@@ -484,6 +484,11 @@ class TestSplitFormField(TestCase):
        self.assertFalse(form.is_valid())
        self.assertEqual(form.errors, {'array': ['Item 2 in the array did not validate: This field is required.']})

    def test_invalid_integer(self):
        msg = 'Item 1 in the array did not validate: Ensure this value is less than or equal to 100.'
        with self.assertRaisesMessage(exceptions.ValidationError, msg):
            SplitArrayField(forms.IntegerField(max_value=100), size=2).clean([0, 101])

    def test_rendering(self):
        class SplitForm(forms.Form):
            array = SplitArrayField(forms.CharField(), size=3)