diff options
| author | Claude Paroz <claude@2xlibre.net> | 2013-01-21 22:34:36 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2013-01-21 22:34:36 +0100 |
| commit | 013db6ba85fb880bd1f9a5ad2e91dc5c1efe197c (patch) | |
| tree | 2a65d7dc3b81d8856a15d936b7a1b3ff23b30e8f | |
| parent | c6e0dedbdb22f4db6577886a2b67e5423684fe7f (diff) | |
Fixed #18051 -- Allowed admin fieldsets to contain lists
Thanks Ricardo di Virgilio for the report, Mateus Gondim for the
patch and Nick Sandford for the review.
| -rw-r--r-- | django/contrib/admin/util.py | 3 | ||||
| -rw-r--r-- | tests/regressiontests/admin_util/tests.py | 22 |
2 files changed, 21 insertions, 4 deletions
diff --git a/django/contrib/admin/util.py b/django/contrib/admin/util.py index a85045c515..07013d1d4b 100644 --- a/django/contrib/admin/util.py +++ b/django/contrib/admin/util.py @@ -88,8 +88,7 @@ def flatten_fieldsets(fieldsets): field_names = [] for name, opts in fieldsets: for field in opts['fields']: - # type checking feels dirty, but it seems like the best way here - if type(field) == tuple: + if isinstance(field, (list, tuple)): field_names.extend(field) else: field_names.append(field) diff --git a/tests/regressiontests/admin_util/tests.py b/tests/regressiontests/admin_util/tests.py index e9e122a9f0..274103cf87 100644 --- a/tests/regressiontests/admin_util/tests.py +++ b/tests/regressiontests/admin_util/tests.py @@ -5,8 +5,8 @@ from datetime import datetime from django.conf import settings from django.contrib import admin from django.contrib.admin import helpers -from django.contrib.admin.util import (display_for_field, label_for_field, - lookup_field, NestedObjects) +from django.contrib.admin.util import (display_for_field, flatten_fieldsets, + label_for_field, lookup_field, NestedObjects) from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE from django.contrib.sites.models import Site from django.db import models, DEFAULT_DB_ALIAS @@ -300,3 +300,21 @@ class UtilTests(unittest.TestCase): '<label for="id_text" class="required inline">&text:</label>') self.assertEqual(helpers.AdminField(form, 'cb', is_first=False).label_tag(), '<label for="id_cb" class="vCheckboxLabel required inline">&cb</label>') + + def test_flatten_fieldsets(self): + """ + Regression test for #18051 + """ + fieldsets = ( + (None, { + 'fields': ('url', 'title', ('content', 'sites')) + }), + ) + self.assertEqual(flatten_fieldsets(fieldsets), ['url', 'title', 'content', 'sites']) + + fieldsets = ( + (None, { + 'fields': ['url', 'title', ['content', 'sites']) + }), + ) + self.assertEqual(flatten_fieldsets(fieldsets), ['url', 'title', 'content', 'sites']) |
