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.