diff options
| author | Alexander Gaevsky <sasha@sasha0.ru> | 2016-02-09 02:35:03 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-02-07 17:46:28 -0500 |
| commit | ef2512b2ffdb719e5c0fb82142f9ce8478282823 (patch) | |
| tree | ba07310c6630e4b4f1d19239668c7de05d653e86 /tests/admin_views | |
| parent | 7d96f0c49ab750799860e42716d7105e11de44de (diff) | |
Fixed #25790 -- Allowed disable column sorting in the admin changelist.
Thanks Ramiro Morales for completing the patch.
Diffstat (limited to 'tests/admin_views')
| -rw-r--r-- | tests/admin_views/admin.py | 40 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 30 | ||||
| -rw-r--r-- | tests/admin_views/urls.py | 1 |
3 files changed, 71 insertions, 0 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py index 3cfefb74e4..04e40c2e0d 100644 --- a/tests/admin_views/admin.py +++ b/tests/admin_views/admin.py @@ -1069,3 +1069,43 @@ site2.register(Person, save_as_continue=False) site7 = admin.AdminSite(name="admin7") site7.register(Article, ArticleAdmin2) site7.register(Section) + + +# Used to test ModelAdmin.sortable_by and get_sortable_by(). +class ArticleAdmin6(admin.ModelAdmin): + list_display = ( + 'content', 'date', callable_year, 'model_year', 'modeladmin_year', + 'model_year_reversed', 'section', + ) + sortable_by = ('date', callable_year) + + def modeladmin_year(self, obj): + return obj.date.year + modeladmin_year.admin_order_field = 'date' + + +class ActorAdmin6(admin.ModelAdmin): + list_display = ('name', 'age') + sortable_by = ('name',) + + def get_sortable_by(self, request): + return ('age',) + + +class ChapterAdmin6(admin.ModelAdmin): + list_display = ('title', 'book') + sortable_by = () + + +class ColorAdmin6(admin.ModelAdmin): + list_display = ('value',) + + def get_sortable_by(self, request): + return () + + +site6 = admin.AdminSite(name='admin6') +site6.register(Article, ArticleAdmin6) +site6.register(Actor, ActorAdmin6) +site6.register(Chapter, ChapterAdmin6) +site6.register(Color, ColorAdmin6) diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 3089307ba2..54a0590d21 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -131,6 +131,7 @@ class AdminViewBasicTestCase(TestCase): cls.chap4 = Chapter.objects.create(title='Chapter 2', content='[ insert contents here ]', book=cls.b2) cls.cx1 = ChapterXtra1.objects.create(chap=cls.chap1, xtra='ChapterXtra1 1') cls.cx2 = ChapterXtra1.objects.create(chap=cls.chap3, xtra='ChapterXtra1 2') + Actor.objects.create(name='Palin', age=27) # Post data for edit inline cls.inline_post_data = { @@ -930,6 +931,35 @@ class AdminViewBasicTest(AdminViewBasicTestCase): self.assertContains(response, 'question__expires__month=10') self.assertContains(response, 'question__expires__year=2016') + def test_sortable_by_columns_subset(self): + expected_sortable_fields = ('date', 'callable_year') + expected_not_sortable_fields = ( + 'content', 'model_year', 'modeladmin_year', 'model_year_reversed', + 'section', + ) + response = self.client.get(reverse('admin6:admin_views_article_changelist')) + for field_name in expected_sortable_fields: + self.assertContains(response, '<th scope="col" class="sortable column-%s">' % field_name) + for field_name in expected_not_sortable_fields: + self.assertContains(response, '<th scope="col" class="column-%s">' % field_name) + + def test_get_sortable_by_columns_subset(self): + response = self.client.get(reverse('admin6:admin_views_actor_changelist')) + self.assertContains(response, '<th scope="col" class="sortable column-age">') + self.assertContains(response, '<th scope="col" class="column-name">') + + def test_sortable_by_no_column(self): + expected_not_sortable_fields = ('title', 'book') + response = self.client.get(reverse('admin6:admin_views_chapter_changelist')) + for field_name in expected_not_sortable_fields: + self.assertContains(response, '<th scope="col" class="column-%s">' % field_name) + self.assertNotContains(response, '<th scope="col" class="sortable column') + + def test_get_sortable_by_no_column(self): + response = self.client.get(reverse('admin6:admin_views_color_changelist')) + self.assertContains(response, '<th scope="col" class="column-value">') + self.assertNotContains(response, '<th scope="col" class="sortable column') + @override_settings(TEMPLATES=[{ 'BACKEND': 'django.template.backends.django.DjangoTemplates', diff --git a/tests/admin_views/urls.py b/tests/admin_views/urls.py index 9f8bdf5cba..c2d989b245 100644 --- a/tests/admin_views/urls.py +++ b/tests/admin_views/urls.py @@ -12,6 +12,7 @@ urlpatterns = [ url(r'^test_admin/admin3/', (admin.site.get_urls(), 'admin', 'admin3'), {'form_url': 'pony'}), url(r'^test_admin/admin4/', customadmin.simple_site.urls), url(r'^test_admin/admin5/', admin.site2.urls), + url(r'^test_admin/admin6/', admin.site6.urls), url(r'^test_admin/admin7/', admin.site7.urls), # All admin views accept `extra_context` to allow adding it like this: url(r'^test_admin/admin8/', (admin.site.get_urls(), 'admin', 'admin-extra-context'), {'extra_context': {}}), |
