Kaydet (Commit) bc8875e3 authored tarafından Jannis Leidel's avatar Jannis Leidel

Fixed #16958 -- Correctly use the queryset method in the auth app's UserAdmin…

Fixed #16958 -- Correctly use the queryset method in the auth app's UserAdmin class. Thanks, mpaolini.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17474 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst a6b6c6e1
...@@ -117,7 +117,7 @@ class UserAdmin(admin.ModelAdmin): ...@@ -117,7 +117,7 @@ class UserAdmin(admin.ModelAdmin):
def user_change_password(self, request, id, form_url=''): def user_change_password(self, request, id, form_url=''):
if not self.has_change_permission(request): if not self.has_change_permission(request):
raise PermissionDenied raise PermissionDenied
user = get_object_or_404(self.model, pk=id) user = get_object_or_404(self.queryset(request), pk=id)
if request.method == 'POST': if request.method == 'POST':
form = self.change_password_form(user, request.POST) form = self.change_password_form(user, request.POST)
if form.is_valid(): if form.is_valid():
......
...@@ -6,6 +6,8 @@ from __future__ import absolute_import ...@@ -6,6 +6,8 @@ from __future__ import absolute_import
from django.conf.urls import patterns from django.conf.urls import patterns
from django.contrib import admin from django.contrib import admin
from django.http import HttpResponse from django.http import HttpResponse
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from . import models, forms, admin as base_admin from . import models, forms, admin as base_admin
...@@ -30,6 +32,14 @@ class Admin2(admin.AdminSite): ...@@ -30,6 +32,14 @@ class Admin2(admin.AdminSite):
def my_view(self, request): def my_view(self, request):
return HttpResponse("Django is a magical pony!") return HttpResponse("Django is a magical pony!")
class UserLimitedAdmin(UserAdmin):
# used for testing password change on a user not in queryset
def queryset(self, request):
qs = super(UserLimitedAdmin, self).queryset(request)
return qs.filter(is_superuser=False)
site = Admin2(name="admin2") site = Admin2(name="admin2")
site.register(models.Article, base_admin.ArticleAdmin) site.register(models.Article, base_admin.ArticleAdmin)
...@@ -37,3 +47,4 @@ site.register(models.Section, inlines=[base_admin.ArticleInline]) ...@@ -37,3 +47,4 @@ site.register(models.Section, inlines=[base_admin.ArticleInline])
site.register(models.Thing, base_admin.ThingAdmin) site.register(models.Thing, base_admin.ThingAdmin)
site.register(models.Fabric, base_admin.FabricAdmin) site.register(models.Fabric, base_admin.FabricAdmin)
site.register(models.ChapterXtra1, base_admin.ChapterXtra1Admin) site.register(models.ChapterXtra1, base_admin.ChapterXtra1Admin)
site.register(User, UserLimitedAdmin)
...@@ -2946,6 +2946,11 @@ class ReadonlyTest(TestCase): ...@@ -2946,6 +2946,11 @@ class ReadonlyTest(TestCase):
response = self.client.get('/test_admin/admin/admin_views/pizza/add/') response = self.client.get('/test_admin/admin/admin_views/pizza/add/')
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
def test_user_password_change_limited_queryset(self):
su = User.objects.filter(is_superuser=True)[0]
response = self.client.get('/test_admin/admin2/auth/user/%s/password/' % su.pk)
self.assertEquals(response.status_code, 404)
class RawIdFieldsTest(TestCase): class RawIdFieldsTest(TestCase):
urls = "regressiontests.admin_views.urls" urls = "regressiontests.admin_views.urls"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment