Author: julien
Date: 2011-10-26 02:37:07 -0700 (Wed, 26 Oct 2011)
New Revision: 17035

Modified:
   django/trunk/django/contrib/admin/options.py
   django/trunk/tests/regressiontests/admin_changelist/tests.py
   django/trunk/tests/regressiontests/admin_registration/tests.py
Log:
Fixed #17090 -- Made the API specification for `ModelAdmin.get_list_display()` 
more consistent with that of `ModelAdmin.list_display` by separating out the 
admin action check boxes business. This is backwards-incompatible for those who 
have been using the still-unreleased `get_list_display()` method. Thanks to 
Ramiro Morales for the review.

Modified: django/trunk/django/contrib/admin/options.py
===================================================================
--- django/trunk/django/contrib/admin/options.py        2011-10-26 06:33:13 UTC 
(rev 17034)
+++ django/trunk/django/contrib/admin/options.py        2011-10-26 09:37:07 UTC 
(rev 17035)
@@ -342,13 +342,6 @@
         self.model = model
         self.opts = model._meta
         self.admin_site = admin_site
-        if 'action_checkbox' not in self.list_display and self.actions is not 
None:
-            self.list_display = ['action_checkbox'] +  list(self.list_display)
-        if not self.list_display_links:
-            for name in self.list_display:
-                if name != 'action_checkbox':
-                    self.list_display_links = [name]
-                    break
         super(ModelAdmin, self).__init__()
 
     def get_inline_instances(self, request):
@@ -1104,19 +1097,23 @@
         # Check actions to see if any are available on this changelist
         actions = self.get_actions(request)
 
-        # Remove action checkboxes if there aren't any actions available.
-        list_display = list(self.get_list_display(request))
-        if not actions:
-            try:
-                list_display.remove('action_checkbox')
-            except ValueError:
-                pass
+        list_display = self.get_list_display(request)
 
+        list_display_links = self.list_display_links
+        if not self.list_display_links and list_display:
+            list_display_links = list(list_display)[:1]
+
+        if actions:
+            # Add the action checkboxes if there are any actions available.
+            list_display = ['action_checkbox'] +  list(list_display)
+
         ChangeList = self.get_changelist(request)
         try:
-            cl = ChangeList(request, self.model, list_display, 
self.list_display_links,
-                self.list_filter, self.date_hierarchy, self.search_fields,
-                self.list_select_related, self.list_per_page, 
self.list_max_show_all, self.list_editable, self)
+            cl = ChangeList(request, self.model, list_display,
+                list_display_links, self.list_filter, self.date_hierarchy,
+                self.search_fields, self.list_select_related,
+                self.list_per_page, self.list_max_show_all, self.list_editable,
+                self)
         except IncorrectLookupParameters:
             # Wacky lookup parameters were given, so redirect to the main
             # changelist page, without parameters, and pass an 'invalid=1'

Modified: django/trunk/tests/regressiontests/admin_changelist/tests.py
===================================================================
--- django/trunk/tests/regressiontests/admin_changelist/tests.py        
2011-10-26 06:33:13 UTC (rev 17034)
+++ django/trunk/tests/regressiontests/admin_changelist/tests.py        
2011-10-26 09:37:07 UTC (rev 17035)
@@ -48,7 +48,7 @@
         template = Template('{% load admin_list %}{% spaceless %}{% 
result_list cl %}{% endspaceless %}')
         context = Context({'cl': cl})
         table_output = template.render(context)
-        row_html = '<tbody><tr class="row1"><td class="action-checkbox"><input 
type="checkbox" class="action-select" value="%d" name="_selected_action" 
/></td><th><a href="%d/">name</a></th><td 
class="nowrap">(None)</td></tr></tbody>' % (new_child.id, new_child.id)
+        row_html = '<tbody><tr class="row1"><th><a href="%d/">name</a></th><td 
class="nowrap">(None)</td></tr></tbody>' % new_child.id
         self.assertFalse(table_output.find(row_html) == -1,
             'Failed to find expected row element: %s' % table_output)
 
@@ -68,7 +68,7 @@
         template = Template('{% load admin_list %}{% spaceless %}{% 
result_list cl %}{% endspaceless %}')
         context = Context({'cl': cl})
         table_output = template.render(context)
-        row_html = '<tbody><tr class="row1"><td class="action-checkbox"><input 
type="checkbox" class="action-select" value="%d" name="_selected_action" 
/></td><th><a href="%d/">name</a></th><td class="nowrap">Parent 
object</td></tr></tbody>' % (new_child.id, new_child.id)
+        row_html = '<tbody><tr class="row1"><th><a href="%d/">name</a></th><td 
class="nowrap">Parent object</td></tr></tbody>' % new_child.id
         self.assertFalse(table_output.find(row_html) == -1,
             'Failed to find expected row element: %s' % table_output)
 

Modified: django/trunk/tests/regressiontests/admin_registration/tests.py
===================================================================
--- django/trunk/tests/regressiontests/admin_registration/tests.py      
2011-10-26 06:33:13 UTC (rev 17034)
+++ django/trunk/tests/regressiontests/admin_registration/tests.py      
2011-10-26 09:37:07 UTC (rev 17035)
@@ -42,7 +42,7 @@
                            search_fields=["name"], list_display=['__str__'])
         self.assertEqual(self.site._registry[Person].search_fields, ['name'])
         self.assertEqual(self.site._registry[Person].list_display,
-                         ['action_checkbox', '__str__'])
+                         ['__str__'])
         self.assertTrue(self.site._registry[Person].save_on_top)
 
     def test_iterable_registration(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