diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2009-05-07 12:52:43 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2009-05-07 12:52:43 +0000 |
| commit | b5f0aff922fe963a4df0d3449d8fe55a6acd950d (patch) | |
| tree | 41d25c3f89eb411e64569ce4e431f0a0f01dbfce /tests/regressiontests | |
| parent | e5757f926156c644e92fee01a2bf05465ed13853 (diff) | |
Fixed #10516 -- Corrected admin search when the search_fields definition contains multiple fields on the same base model. Thanks to Zain Memon for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10684 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests')
| -rw-r--r-- | tests/regressiontests/admin_views/fixtures/multiple-child-classes.json | 107 | ||||
| -rw-r--r-- | tests/regressiontests/admin_views/models.py | 20 | ||||
| -rw-r--r-- | tests/regressiontests/admin_views/tests.py | 15 |
3 files changed, 142 insertions, 0 deletions
diff --git a/tests/regressiontests/admin_views/fixtures/multiple-child-classes.json b/tests/regressiontests/admin_views/fixtures/multiple-child-classes.json new file mode 100644 index 0000000000..5cadf4c1c5 --- /dev/null +++ b/tests/regressiontests/admin_views/fixtures/multiple-child-classes.json @@ -0,0 +1,107 @@ +[ + { + "pk": 1, + "model": "admin_views.title", + "fields": + { + } + }, + + { + "pk": 2, + "model": "admin_views.title", + "fields": + { + } + }, + + { + "pk": 3, + "model": "admin_views.title", + "fields": + { + } + }, + + { + "pk": 4, + "model": "admin_views.title", + "fields": + { + } + }, + + { + "pk": 1, + "model": "admin_views.titletranslation", + "fields": + { + "text": "Bar", + "title": 1 + } + }, + + { + "pk": 2, + "model": "admin_views.titletranslation", + "fields": + { + "text": "Foo", + "title": 2 + } + }, + + { + "pk": 3, + "model": "admin_views.titletranslation", + "fields": + { + "text": "Few", + "title": 3 + } + }, + + { + "pk": 4, + "model": "admin_views.titletranslation", + "fields": + { + "text": "Bas", + "title": 4 + } + }, + + { + "pk": 1, + "model": "admin_views.recommender", + "fields": + { + } + }, + + { + "pk": 4, + "model": "admin_views.recommender", + "fields": + { + } + }, + + { + "pk": 2, + "model": "admin_views.recommendation", + "fields": + { + "recommender": 1 + } + }, + + { + "pk": 3, + "model": "admin_views.recommendation", + "fields": + { + "recommender": 4 + } + } +]
\ No newline at end of file diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py index dbadee42f9..1aeaea1b1d 100644 --- a/tests/regressiontests/admin_views/models.py +++ b/tests/regressiontests/admin_views/models.py @@ -339,6 +339,24 @@ class LanguageAdmin(admin.ModelAdmin): list_display = ['iso', 'shortlist', 'english_name', 'name'] list_editable = ['shortlist'] +# a base class for Recommender and Recommendation +class Title(models.Model): + pass + +class TitleTranslation(models.Model): + title = models.ForeignKey(Title) + text = models.CharField(max_length=100) + +class Recommender(Title): + pass + +class Recommendation(Title): + recommender = models.ForeignKey(Recommender) + +class RecommendationAdmin(admin.ModelAdmin): + search_fields = ('titletranslation__text', 'recommender__titletranslation__text',) + + admin.site.register(Article, ArticleAdmin) admin.site.register(CustomArticle, CustomArticleAdmin) admin.site.register(Section, save_as=True, inlines=[ArticleInline]) @@ -358,6 +376,8 @@ admin.site.register(Fabric, FabricAdmin) admin.site.register(Gallery, GalleryAdmin) admin.site.register(Picture, PictureAdmin) admin.site.register(Language, LanguageAdmin) +admin.site.register(Recommendation, RecommendationAdmin) +admin.site.register(Recommender) # We intentionally register Promo and ChapterXtra1 but not Chapter nor ChapterXtra2. # That way we cover all four cases: diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index a435003315..a571995d45 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -890,6 +890,21 @@ class AdminViewListEditable(TestCase): self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, False) +class AdminSearchTest(TestCase): + fixtures = ['admin-views-users','multiple-child-classes'] + + def setUp(self): + self.client.login(username='super', password='secret') + + def tearDown(self): + self.client.logout() + + def test_search_on_sibling_models(self): + "Check that a search that mentions sibling models" + response = self.client.get('/test_admin/admin/admin_views/recommendation/?q=bar') + # confirm the search returned 1 object + self.assertContains(response, "\n1 recommendation\n") + class AdminInheritedInlinesTest(TestCase): fixtures = ['admin-views-users.xml',] |
