Commit b4126813 authored by Jon Dufresne's avatar Jon Dufresne Committed by Tim Graham
Browse files

Fixed #26267 -- Fixed BoundField to reallow slices of subwidgets.

parent 1ff6e37d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ class BoundField(object):
    def __getitem__(self, idx):
        # Prevent unnecessary reevaluation when accessing BoundField's attrs
        # from templates.
        if not isinstance(idx, six.integer_types):
        if not isinstance(idx, six.integer_types + (slice,)):
            raise TypeError
        return list(self.__iter__())[idx]

+2 −0
Original line number Diff line number Diff line
@@ -24,3 +24,5 @@ Bugfixes

* Reallowed dashes in top-level domain names of URLs checked by
  ``URLValidator`` to fix a regression in Django 1.8 (:ticket:`26204`).

* Fixed ``BoundField`` to reallow slices of subwidgets (:ticket:`26267`).
+2 −0
Original line number Diff line number Diff line
@@ -40,3 +40,5 @@ Bugfixes

* Fixed some crashing deprecation shims in ``SimpleTemplateResponse`` that
  regressed in Django 1.9 (:ticket:`26253`).

* Fixed ``BoundField`` to reallow slices of subwidgets (:ticket:`26267`).
+1 −0
Original line number Diff line number Diff line
@@ -632,6 +632,7 @@ quoteless
Radziej
rc
readded
reallow
reallowed
rebase
rebased
+14 −0
Original line number Diff line number Diff line
@@ -661,6 +661,20 @@ class FormsTestCase(SimpleTestCase):
        f = BeatleForm(auto_id=False)
        self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" />')

    def test_boundfield_slice(self):
        class BeatleForm(Form):
            name = ChoiceField(
                choices=[('john', 'John'), ('paul', 'Paul'), ('george', 'George'), ('ringo', 'Ringo')],
                widget=RadioSelect,
            )

        f = BeatleForm()
        bf = f['name']
        self.assertEqual(
            [str(item) for item in bf[1:]],
            [str(bf[1]), str(bf[2]), str(bf[3])],
        )

    def test_forms_with_multiple_choice(self):
        # MultipleChoiceField is a special case, as its data is required to be a list:
        class SongForm(Form):