From cb996cce059ec6f384d7ee9b67df6208c92eb719 Mon Sep 17 00:00:00 2001 From: Luke Plant Date: Fri, 3 Jun 2011 11:54:29 +0000 Subject: Fixed various bugs related to having multiple columns in admin list_display with the same sort field Thanks to julien for the report Refs #11868 git-svn-id: http://code.djangoproject.com/svn/django/trunk@16319 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/admin_views/models.py | 15 +++++++++++ tests/regressiontests/admin_views/tests.py | 39 ++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) (limited to 'tests/regressiontests/admin_views') diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index 98873966eb..52d96a93f6 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -811,6 +811,20 @@ class OtherStoryAdmin(admin.ModelAdmin): list_editable = ('content', ) ordering = ["-pk"] +class ComplexSortedPerson(models.Model): + name = models.CharField(max_length=100) + age = models.PositiveIntegerField() + is_employee = models.NullBooleanField() + +class ComplexSortedPersonAdmin(admin.ModelAdmin): + list_display = ('name', 'age', 'is_employee', 'colored_name') + ordering = ('name',) + + def colored_name(self, obj): + return '%s' % ('ff00ff', obj.name) + colored_name.allow_tags = True + colored_name.admin_order_field = 'name' + admin.site.register(Article, ArticleAdmin) admin.site.register(CustomArticle, CustomArticleAdmin) admin.site.register(Section, save_as=True, inlines=[ArticleInline]) @@ -872,3 +886,4 @@ admin.site.register(Album, AlbumAdmin) admin.site.register(Question) admin.site.register(Answer) admin.site.register(PrePopulatedPost, PrePopulatedPostAdmin) +admin.site.register(ComplexSortedPerson, ComplexSortedPersonAdmin) diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 4361dc992e..25056b5e04 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -37,7 +37,8 @@ from models import (Article, BarAccount, CustomArticle, EmptyModel, Language, Collector, Widget, Grommet, DooHickey, FancyDoodad, Whatsit, Category, Post, Plot, FunkyTag, Chapter, Book, Promo, WorkHour, Employee, Question, Answer, Inquisition, Actor, FoodDelivery, - RowLevelChangePermissionModel, Paper, CoverLetter, Story, OtherStory) + RowLevelChangePermissionModel, Paper, CoverLetter, Story, OtherStory, + ComplexSortedPerson) class AdminViewBasicTest(TestCase): @@ -313,6 +314,42 @@ class AdminViewBasicTest(TestCase): response.content.index(link % p1.pk) < response.content.index(link % p2.pk) ) + def testMultipleSortSameField(self): + # Check that we get the columns we expect if we have two columns + # that correspond to the same ordering field + dt = datetime.datetime.now() + p1 = Podcast.objects.create(name="A", release_date=dt) + p2 = Podcast.objects.create(name="B", release_date=dt - datetime.timedelta(10)) + + link = '