summaryrefslogtreecommitdiff
path: root/django/contrib/admin/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/admin/utils.py')
-rw-r--r--django/contrib/admin/utils.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/django/contrib/admin/utils.py b/django/contrib/admin/utils.py
index a2f2e9fa7b..b52300756b 100644
--- a/django/contrib/admin/utils.py
+++ b/django/contrib/admin/utils.py
@@ -83,15 +83,25 @@ def unquote(s):
return "".join(res)
+def flatten(fields):
+ """Returns a list which is a single level of flattening of the
+ original list."""
+ flat = []
+ for field in fields:
+ if isinstance(field, (list, tuple)):
+ flat.extend(field)
+ else:
+ flat.append(field)
+ return flat
+
+
def flatten_fieldsets(fieldsets):
"""Returns a list of field names from an admin fieldsets structure."""
field_names = []
for name, opts in fieldsets:
- for field in opts['fields']:
- if isinstance(field, (list, tuple)):
- field_names.extend(field)
- else:
- field_names.append(field)
+ field_names.extend(
+ flatten(opts['fields'])
+ )
return field_names