Changeset 8283
- Timestamp:
- 08/10/08 04:43:48 (1 year ago)
- Files:
-
- django/trunk/django/contrib/admin/sites.py (modified) (3 diffs)
- django/trunk/django/contrib/auth/admin.py (modified) (4 diffs)
- django/trunk/django/contrib/auth/views.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/admin/sites.py
r8275 r8283 19 19 LOGIN_FORM_KEY = 'this_is_the_login_form' 20 20 21 USER_CHANGE_PASSWORD_URL_RE = re.compile('auth/user/(\d+)/password')22 23 21 class AlreadyRegistered(Exception): 24 22 pass … … 171 169 return shortcut(request, *url.split('/')[1:]) 172 170 else: 173 match = USER_CHANGE_PASSWORD_URL_RE.match(url)174 if match:175 return self.user_change_password(request, match.group(1))176 177 171 if '/' in url: 178 172 return self.model_page(request, *url.split('/', 2)) … … 209 203 from django.contrib.auth.views import password_change_done 210 204 return password_change_done(request) 211 212 def user_change_password(self, request, id):213 """214 Handles the "user change password" task215 """216 from django.contrib.auth.views import user_change_password217 return user_change_password(request, id)218 205 219 206 def i18n_javascript(self, request): django/trunk/django/contrib/auth/admin.py
r8280 r8283 1 1 2 from django.contrib.auth.models import User, Group 2 3 from django.core.exceptions import PermissionDenied 3 4 from django import template 4 from django.shortcuts import render_to_response 5 from django.shortcuts import render_to_response, get_object_or_404 6 from django.template import RequestContext 7 from django.utils.html import escape 5 8 from django.http import HttpResponseRedirect 6 9 from django.utils.translation import ugettext, ugettext_lazy as _ 7 from django.contrib.auth.forms import UserCreationForm 10 from django.contrib.auth.forms import UserCreationForm, AdminPasswordChangeForm 8 11 from django.contrib import admin 9 12 … … 22 25 ) 23 26 add_form = UserCreationForm 27 change_password_form = AdminPasswordChangeForm 24 28 list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff') 25 29 list_filter = ('is_staff', 'is_superuser') … … 27 31 ordering = ('username',) 28 32 filter_horizontal = ('user_permissions',) 29 33 34 def __call__(self, request, url): 35 # this should not be here, but must be due to the way __call__ routes 36 # in ModelAdmin. 37 if url is None: 38 return self.changelist_view(request) 39 if url.endswith('password'): 40 return self.user_change_password(request, url.split('/')[0]) 41 return super(UserAdmin, self).__call__(request, url) 42 30 43 def add_view(self, request): 31 44 if not self.has_change_permission(request): … … 61 74 'root_path': self.admin_site.root_path, 62 75 }, context_instance=template.RequestContext(request)) 76 77 def user_change_password(self, request, id): 78 if not request.user.has_perm('auth.change_user'): 79 raise PermissionDenied 80 user = get_object_or_404(self.model, pk=id) 81 if request.method == 'POST': 82 form = self.change_password_form(user, request.POST) 83 if form.is_valid(): 84 new_user = form.save() 85 msg = ugettext('Password changed successfully.') 86 request.user.message_set.create(message=msg) 87 return HttpResponseRedirect('..') 88 else: 89 form = self.change_password_form(user) 90 return render_to_response('admin/auth/user/change_password.html', { 91 'title': _('Change password: %s') % escape(user.username), 92 'form': form, 93 'is_popup': '_popup' in request.REQUEST, 94 'add': True, 95 'change': False, 96 'has_delete_permission': False, 97 'has_change_permission': True, 98 'has_absolute_url': False, 99 'opts': self.model._meta, 100 'original': user, 101 'save_as': False, 102 'show_save': True, 103 'root_path': self.admin_site.root_path, 104 }, context_instance=RequestContext(request)) 105 63 106 64 107 admin.site.register(Group, GroupAdmin) django/trunk/django/contrib/auth/views.py
r8171 r8283 150 150 def password_change_done(request, template_name='registration/password_change_done.html'): 151 151 return render_to_response(template_name, context_instance=RequestContext(request)) 152 153 # TODO: move to admin.py in the ModelAdmin154 def user_change_password(request, id):155 if not request.user.has_perm('auth.change_user'):156 raise PermissionDenied157 user = get_object_or_404(User, pk=id)158 if request.method == 'POST':159 form = AdminPasswordChangeForm(user, request.POST)160 if form.is_valid():161 new_user = form.save()162 msg = _('Password changed successfully.')163 request.user.message_set.create(message=msg)164 return HttpResponseRedirect('..')165 else:166 form = AdminPasswordChangeForm(user)167 return render_to_response('admin/auth/user/change_password.html', {168 'title': _('Change password: %s') % escape(user.username),169 'form': form,170 'is_popup': '_popup' in request.REQUEST,171 'add': True,172 'change': False,173 'has_delete_permission': False,174 'has_change_permission': True,175 'has_absolute_url': False,176 'opts': User._meta,177 'original': user,178 'save_as': False,179 'show_save': True,180 'root_path': re.sub('auth/user/(\d+)/password/$', '', request.path),181 }, context_instance=RequestContext(request))
