diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py index 94d86026c4..185417015a 100644 --- a/django/contrib/admin/sites.py +++ b/django/contrib/admin/sites.py @@ -391,9 +391,9 @@ class AdminSite(object): 'app_list': app_list, } context.update(extra_context or {}) - return TemplateResponse(request, [ - self.index_template or 'admin/index.html', - ], context, current_app=self.name) + return TemplateResponse(request, self.index_template or + 'admin/index.html', context, + current_app=self.name) def app_index(self, request, app_label, extra_context=None): user = request.user diff --git a/django/contrib/auth/admin.py b/django/contrib/auth/admin.py index 86442b9078..d15a387a7e 100644 --- a/django/contrib/auth/admin.py +++ b/django/contrib/auth/admin.py @@ -148,10 +148,10 @@ class UserAdmin(admin.ModelAdmin): 'save_as': False, 'show_save': True, } - return TemplateResponse(request, [ + return TemplateResponse(request, self.change_user_password_template or - 'admin/auth/user/change_password.html' - ], context, current_app=self.admin_site.name) + 'admin/auth/user/change_password.html', + context, current_app=self.admin_site.name) def response_add(self, request, obj, **kwargs): """ diff --git a/tests/regressiontests/admin_views/customadmin.py b/tests/regressiontests/admin_views/customadmin.py index 031fb50f0f..d69d690af0 100644 --- a/tests/regressiontests/admin_views/customadmin.py +++ b/tests/regressiontests/admin_views/customadmin.py @@ -16,7 +16,7 @@ class Admin2(admin.AdminSite): login_form = forms.CustomAdminAuthenticationForm login_template = 'custom_admin/login.html' logout_template = 'custom_admin/logout.html' - index_template = 'custom_admin/index.html' + index_template = ['custom_admin/index.html'] # a list, to test fix for #18697 password_change_template = 'custom_admin/password_change_form.html' password_change_done_template = 'custom_admin/password_change_done.html' @@ -40,6 +40,10 @@ class UserLimitedAdmin(UserAdmin): return qs.filter(is_superuser=False) +class CustomPwdTemplateUserAdmin(UserAdmin): + change_user_password_template = ['admin/auth/user/change_password.html'] # a list, to test fix for #18697 + + site = Admin2(name="admin2") site.register(models.Article, base_admin.ArticleAdmin) @@ -50,3 +54,6 @@ site.register(models.ChapterXtra1, base_admin.ChapterXtra1Admin) site.register(User, UserLimitedAdmin) site.register(models.UndeletableObject, base_admin.UndeletableObjectAdmin) site.register(models.Simple, base_admin.AttributeErrorRaisingAdmin) + +simple_site = Admin2(name='admin4') +simple_site.register(User, CustomPwdTemplateUserAdmin) diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 6c95e1b6f9..bbb8281fed 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -770,7 +770,10 @@ class CustomModelAdminTest(AdminViewBasicTest): self.assertContains(response, 'Hello from a custom logout template') def testCustomAdminSiteIndexViewAndTemplate(self): - response = self.client.get('/test_admin/admin2/') + try: + response = self.client.get('/test_admin/admin2/') + except TypeError: + self.fail('AdminSite.index_template should accept a list of template paths') self.assertIsInstance(response, TemplateResponse) self.assertTemplateUsed(response, 'custom_admin/index.html') self.assertContains(response, 'Hello from a custom index template *bar*') @@ -792,6 +795,15 @@ class CustomModelAdminTest(AdminViewBasicTest): response = self.client.get('/test_admin/%s/my_view/' % self.urlbit) self.assertEqual(response.content, b"Django is a magical pony!") + def test_pwd_change_custom_template(self): + self.client.login(username='super', password='secret') + su = User.objects.get(username='super') + try: + response = self.client.get('/test_admin/admin4/auth/user/%s/password/' % su.pk) + except TypeError: + self.fail('ModelAdmin.change_user_password_template should accept a list of template paths') + self.assertEqual(response.status_code, 200) + def get_perm(Model, perm): """Return the permission object, for the Model""" diff --git a/tests/regressiontests/admin_views/urls.py b/tests/regressiontests/admin_views/urls.py index da6e2cbcf9..441834cd2a 100644 --- a/tests/regressiontests/admin_views/urls.py +++ b/tests/regressiontests/admin_views/urls.py @@ -11,4 +11,5 @@ urlpatterns = patterns('', (r'^test_admin/admin/', include(admin.site.urls)), (r'^test_admin/admin2/', include(customadmin.site.urls)), (r'^test_admin/admin3/', include(admin.site.urls), dict(form_url='pony')), + (r'^test_admin/admin4/', include(customadmin.simple_site.urls)), )