summaryrefslogtreecommitdiff
path: root/tests/admin_views
diff options
context:
space:
mode:
authorJuan Catalano <catalanojuan@gmail.com>2013-09-06 20:28:48 +0000
committerJulien Phalip <jphalip@gmail.com>2013-09-07 14:53:29 -0500
commit04415bf81b2440a08fc224e6c481bcb5840bbcbc (patch)
tree0dc7b82aac7ee935ad3bf2d48389d6b85e5a5cb5 /tests/admin_views
parente192739b3e3209a371a5d0f5f05fd083e88259f2 (diff)
Fixed #21013 -- Ensure that ModelAdmin.get_queryset is considered for the admin history view.
Diffstat (limited to 'tests/admin_views')
-rw-r--r--tests/admin_views/admin.py9
-rw-r--r--tests/admin_views/models.py11
-rw-r--r--tests/admin_views/tests.py22
3 files changed, 40 insertions, 2 deletions
diff --git a/tests/admin_views/admin.py b/tests/admin_views/admin.py
index b2da23f08e..5649a3c492 100644
--- a/tests/admin_views/admin.py
+++ b/tests/admin_views/admin.py
@@ -30,7 +30,7 @@ from .models import (Article, Chapter, Account, Media, Child, Parent, Picture,
AdminOrderedField, AdminOrderedModelMethod, AdminOrderedAdminMethod,
AdminOrderedCallable, Report, Color2, UnorderedObject, MainPrepopulated,
RelatedPrepopulated, UndeletableObject, UnchangeableObject, UserMessenger, Simple, Choice,
- ShortMessage, Telegram)
+ ShortMessage, Telegram, FilteredManager)
def callable_year(dt_value):
@@ -674,6 +674,12 @@ def callable_on_unknown(obj):
class AttributeErrorRaisingAdmin(admin.ModelAdmin):
list_display = [callable_on_unknown, ]
+
+class CustomManagerAdmin(admin.ModelAdmin):
+ def get_queryset(self, request):
+ return FilteredManager.objects
+
+
class MessageTestingAdmin(admin.ModelAdmin):
actions = ["message_debug", "message_info", "message_success",
"message_warning", "message_error", "message_extra_tags"]
@@ -773,6 +779,7 @@ site.register(Question)
site.register(Answer)
site.register(PrePopulatedPost, PrePopulatedPostAdmin)
site.register(ComplexSortedPerson, ComplexSortedPersonAdmin)
+site.register(FilteredManager, CustomManagerAdmin)
site.register(PluggableSearchPerson, PluggableSearchPersonAdmin)
site.register(PrePopulatedPostLargeSlug, PrePopulatedPostLargeSlugAdmin)
site.register(AdminOrderedField, AdminOrderedFieldAdmin)
diff --git a/tests/admin_views/models.py b/tests/admin_views/models.py
index 6483fc8717..c09411dc27 100644
--- a/tests/admin_views/models.py
+++ b/tests/admin_views/models.py
@@ -693,3 +693,14 @@ class Simple(models.Model):
class Choice(models.Model):
choice = models.IntegerField(blank=True, null=True,
choices=((1, 'Yes'), (0, 'No'), (None, 'No opinion')))
+
+class _Manager(models.Manager):
+ def get_queryset(self):
+ return super(_Manager, self).get_queryset().filter(pk__gt=1)
+
+class FilteredManager(models.Model):
+ def __str__(self):
+ return "PK=%d" % self.pk
+
+ pk_gt_1 = _Manager()
+ objects = models.Manager()
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index fc1e18a47f..718b831846 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -48,7 +48,7 @@ from .models import (Article, BarAccount, CustomArticle, EmptyModel, FooAccount,
AdminOrderedModelMethod, AdminOrderedAdminMethod, AdminOrderedCallable,
Report, MainPrepopulated, RelatedPrepopulated, UnorderedObject,
Simple, UndeletableObject, UnchangeableObject, Choice, ShortMessage,
- Telegram, Pizza, Topping)
+ Telegram, Pizza, Topping, FilteredManager)
from .admin import site, site2
@@ -2656,6 +2656,12 @@ class AdminCustomQuerysetTest(TestCase):
def setUp(self):
self.client.login(username='super', password='secret')
self.pks = [EmptyModel.objects.create().id for i in range(3)]
+ self.super_login = {
+ REDIRECT_FIELD_NAME: '/test_admin/admin/',
+ LOGIN_FORM_KEY: 1,
+ 'username': 'super',
+ 'password': 'secret',
+ }
def test_changelist_view(self):
response = self.client.get('/test_admin/admin/admin_views/emptymodel/')
@@ -2873,6 +2879,20 @@ class AdminCustomQuerysetTest(TestCase):
html=True
)
+ def test_history_view_custom_qs(self):
+ """
+ Ensure that custom querysets are considered for the admin history view.
+ Refs #21013.
+ """
+ self.client.post('/test_admin/admin/', self.super_login)
+ FilteredManager.objects.create(pk=1)
+ FilteredManager.objects.create(pk=2)
+ response = self.client.get('/test_admin/admin/admin_views/filteredmanager/')
+ self.assertContains(response, "PK=1")
+ self.assertContains(response, "PK=2")
+ self.assertEqual(self.client.get('/test_admin/admin/admin_views/filteredmanager/1/history/').status_code, 200)
+ self.assertEqual(self.client.get('/test_admin/admin/admin_views/filteredmanager/2/history/').status_code, 200)
+
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
class AdminInlineFileUploadTest(TestCase):