From 5c1143910e071c73671424036408c4548742d24f Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Mon, 29 Jul 2013 19:19:04 +0200 Subject: Removed most of absolute_import imports Should be unneeded with Python 2.7 and up. Added some unicode_literals along the way. --- tests/generic_inline_admin/admin.py | 2 -- tests/generic_inline_admin/tests.py | 2 +- tests/generic_inline_admin/urls.py | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) (limited to 'tests/generic_inline_admin') diff --git a/tests/generic_inline_admin/admin.py b/tests/generic_inline_admin/admin.py index 73cac7f7c5..1917024fa5 100644 --- a/tests/generic_inline_admin/admin.py +++ b/tests/generic_inline_admin/admin.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import - from django.contrib import admin from django.contrib.contenttypes import generic diff --git a/tests/generic_inline_admin/tests.py b/tests/generic_inline_admin/tests.py index ac2c191183..ccf12ab4f3 100644 --- a/tests/generic_inline_admin/tests.py +++ b/tests/generic_inline_admin/tests.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, unicode_literals +from __future__ import unicode_literals from django.conf import settings from django.contrib import admin diff --git a/tests/generic_inline_admin/urls.py b/tests/generic_inline_admin/urls.py index 88d7b574d4..8d68d6c922 100644 --- a/tests/generic_inline_admin/urls.py +++ b/tests/generic_inline_admin/urls.py @@ -1,5 +1,3 @@ -from __future__ import absolute_import - from django.conf.urls import patterns, include from . import admin -- cgit v1.3 From a0ed2f9260f995b0cdf145f2802fc8123c25db65 Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Wed, 31 Jul 2013 12:50:39 +0700 Subject: Fixed #18681 -- GenericInlineModelAdmin.get_formset() no longer bypasses get_fieldsets(). Refs 23e1b59 which already fixed this issue for ModelAdmin and InlineModelAdmin. --- django/contrib/contenttypes/generic.py | 6 +++--- tests/generic_inline_admin/tests.py | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'tests/generic_inline_admin') diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py index 6f120f82e0..186f39068d 100644 --- a/django/contrib/contenttypes/generic.py +++ b/django/contrib/contenttypes/generic.py @@ -465,10 +465,10 @@ class GenericInlineModelAdmin(InlineModelAdmin): formset = BaseGenericInlineFormSet def get_formset(self, request, obj=None, **kwargs): - if self.declared_fieldsets: - fields = flatten_fieldsets(self.declared_fieldsets) + if 'fields' in kwargs: + fields = kwargs.pop('fields') else: - fields = None + fields = flatten_fieldsets(self.get_fieldsets(request, obj)) if self.exclude is None: exclude = [] else: diff --git a/tests/generic_inline_admin/tests.py b/tests/generic_inline_admin/tests.py index ccf12ab4f3..83bee2f4e0 100644 --- a/tests/generic_inline_admin/tests.py +++ b/tests/generic_inline_admin/tests.py @@ -325,3 +325,23 @@ class GenericInlineModelAdminTest(TestCase): self.assertEqual( list(list(ma.get_formsets(request))[0]().forms[0].fields), ['description', 'keywords', 'id', 'DELETE']) + + def test_get_fieldsets(self): + # Test that get_fieldsets is called when figuring out form fields. + # Refs #18681. + class MediaForm(ModelForm): + class Meta: + model = Media + fields = '__all__' + + class MediaInline(GenericTabularInline): + form = MediaForm + model = Media + can_delete = False + + def get_fieldsets(self, request, obj=None): + return [(None, {'fields': ['url', 'description']})] + + ma = MediaInline(Media, self.site) + form = ma.get_formset(None).form + self.assertEqual(form._meta.fields, ['url', 'description']) -- cgit v1.3