Author: jezdez
Date: 2011-07-03 10:56:33 -0700 (Sun, 03 Jul 2011)
New Revision: 16497

Modified:
   django/trunk/django/contrib/admin/options.py
   django/trunk/tests/regressiontests/modeladmin/tests.py
Log:
Fixed #15820 -- Fixed the use of the InlineAdmin's get_formset method by 
actually passing in the obj. Thanks, Julien Phalip.

Modified: django/trunk/django/contrib/admin/options.py
===================================================================
--- django/trunk/django/contrib/admin/options.py        2011-07-03 17:56:25 UTC 
(rev 16496)
+++ django/trunk/django/contrib/admin/options.py        2011-07-03 17:56:33 UTC 
(rev 16497)
@@ -1360,7 +1360,7 @@
     def get_fieldsets(self, request, obj=None):
         if self.declared_fieldsets:
             return self.declared_fieldsets
-        form = self.get_formset(request).form
+        form = self.get_formset(request, obj).form
         fields = form.base_fields.keys() + 
list(self.get_readonly_fields(request, obj))
         return [(None, {'fields': fields})]
 

Modified: django/trunk/tests/regressiontests/modeladmin/tests.py
===================================================================
--- django/trunk/tests/regressiontests/modeladmin/tests.py      2011-07-03 
17:56:25 UTC (rev 16496)
+++ django/trunk/tests/regressiontests/modeladmin/tests.py      2011-07-03 
17:56:33 UTC (rev 16497)
@@ -237,6 +237,38 @@
             '<option value="%d">The Doors</option>\n'
             '</select>' % self.band.id)
 
+    def test_regression_for_ticket_15820(self):
+        """
+        Ensure that `obj` is passed from `InlineModelAdmin.get_fieldsets()` to
+        `InlineModelAdmin.get_formset()`.
+        """
+        class CustomConcertForm(forms.ModelForm):
+
+            class Meta:
+                model = Concert
+                fields = ['day']
+
+        class ConcertInline(TabularInline):
+            model = Concert
+            fk_name = 'main_band'
+
+            def get_formset(self, request, obj=None, **kwargs):
+                if obj:
+                    kwargs['form'] = CustomConcertForm
+                return super(ConcertInline, self).get_formset(request, obj, 
**kwargs)
+
+        class BandAdmin(ModelAdmin):
+            inlines = [
+                ConcertInline
+            ]
+
+        concert = Concert.objects.create(main_band=self.band, 
opening_band=self.band, day=1)
+        ma = BandAdmin(Band, self.site)
+        fieldsets = list(ma.inline_instances[0].get_fieldsets(request))
+        self.assertEqual(fieldsets[0][1]['fields'], ['main_band', 
'opening_band', 'day', 'transport'])
+        fieldsets = list(ma.inline_instances[0].get_fieldsets(request, 
ma.inline_instances[0].model))
+        self.assertEqual(fieldsets[0][1]['fields'], ['day'])
+
     # radio_fields behavior ###########################################
 
     def test_default_foreign_key_widget(self):

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to