mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #8493 -- Fixed a NoReverseMatch when redirecting to password_change/done/ in the admin. Added the ability to override redirects to other password change views for consistency. Thanks for the report mtrichardson.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8473 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -194,7 +194,8 @@ class AdminSite(object): | |||||||
|         Handles the "change password" task -- both form display and validation. |         Handles the "change password" task -- both form display and validation. | ||||||
|         """ |         """ | ||||||
|         from django.contrib.auth.views import password_change |         from django.contrib.auth.views import password_change | ||||||
|         return password_change(request) |         return password_change(request, | ||||||
|  |             post_save_redirect='%spassword_change/done/' % self.root_path) | ||||||
|  |  | ||||||
|     def password_change_done(self, request): |     def password_change_done(self, request): | ||||||
|         """ |         """ | ||||||
|   | |||||||
| @@ -73,7 +73,10 @@ def redirect_to_login(next, login_url=None, redirect_field_name=REDIRECT_FIELD_N | |||||||
|  |  | ||||||
| def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', | def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', | ||||||
|         email_template_name='registration/password_reset_email.html', |         email_template_name='registration/password_reset_email.html', | ||||||
|         password_reset_form=PasswordResetForm, token_generator=default_token_generator): |         password_reset_form=PasswordResetForm, token_generator=default_token_generator, | ||||||
|  |         post_reset_redirect=None): | ||||||
|  |     if post_reset_redirect is None: | ||||||
|  |         post_reset_redirect = reverse('django.contrib.auth.views.password_reset_done') | ||||||
|     if request.method == "POST": |     if request.method == "POST": | ||||||
|         form = password_reset_form(request.POST) |         form = password_reset_form(request.POST) | ||||||
|         if form.is_valid(): |         if form.is_valid(): | ||||||
| @@ -87,7 +90,7 @@ def password_reset(request, is_admin_site=False, template_name='registration/pas | |||||||
|                 if not Site._meta.installed: |                 if not Site._meta.installed: | ||||||
|                     opts['domain_override'] = RequestSite(request).domain |                     opts['domain_override'] = RequestSite(request).domain | ||||||
|             form.save(**opts) |             form.save(**opts) | ||||||
|             return HttpResponseRedirect(reverse('django.contrib.auth.views.password_reset_done')) |             return HttpResponseRedirect(post_reset_redirect) | ||||||
|     else: |     else: | ||||||
|         form = password_reset_form() |         form = password_reset_form() | ||||||
|     return render_to_response(template_name, { |     return render_to_response(template_name, { | ||||||
| @@ -98,12 +101,15 @@ def password_reset_done(request, template_name='registration/password_reset_done | |||||||
|     return render_to_response(template_name, context_instance=RequestContext(request)) |     return render_to_response(template_name, context_instance=RequestContext(request)) | ||||||
|  |  | ||||||
| def password_reset_confirm(request, uidb36=None, token=None, template_name='registration/password_reset_confirm.html', | def password_reset_confirm(request, uidb36=None, token=None, template_name='registration/password_reset_confirm.html', | ||||||
|                            token_generator=default_token_generator, set_password_form=SetPasswordForm): |                            token_generator=default_token_generator, set_password_form=SetPasswordForm, | ||||||
|  |                            post_reset_redirect=None): | ||||||
|     """ |     """ | ||||||
|     View that checks the hash in a password reset link and presents a |     View that checks the hash in a password reset link and presents a | ||||||
|     form for entering a new password. |     form for entering a new password. | ||||||
|     """ |     """ | ||||||
|     assert uidb36 is not None and token is not None # checked by URLconf |     assert uidb36 is not None and token is not None # checked by URLconf | ||||||
|  |     if post_reset_redirect is None: | ||||||
|  |         post_reset_redirect = reverse('django.contrib.auth.views.password_reset_complete') | ||||||
|     try: |     try: | ||||||
|         uid_int = base36_to_int(uidb36) |         uid_int = base36_to_int(uidb36) | ||||||
|     except ValueError: |     except ValueError: | ||||||
| @@ -118,7 +124,7 @@ def password_reset_confirm(request, uidb36=None, token=None, template_name='regi | |||||||
|             form = set_password_form(user, request.POST) |             form = set_password_form(user, request.POST) | ||||||
|             if form.is_valid(): |             if form.is_valid(): | ||||||
|                 form.save() |                 form.save() | ||||||
|                 return HttpResponseRedirect(reverse('django.contrib.auth.views.password_reset_complete')) |                 return HttpResponseRedirect(post_reset_redirect) | ||||||
|         else: |         else: | ||||||
|             form = set_password_form(None) |             form = set_password_form(None) | ||||||
|     else: |     else: | ||||||
| @@ -131,12 +137,15 @@ def password_reset_complete(request, template_name='registration/password_reset_ | |||||||
|     return render_to_response(template_name, context_instance=RequestContext(request, |     return render_to_response(template_name, context_instance=RequestContext(request, | ||||||
|                                                                              {'login_url': settings.LOGIN_URL})) |                                                                              {'login_url': settings.LOGIN_URL})) | ||||||
|  |  | ||||||
| def password_change(request, template_name='registration/password_change_form.html'): | def password_change(request, template_name='registration/password_change_form.html', | ||||||
|  |                     post_change_redirect=None): | ||||||
|  |     if post_change_redirect is None: | ||||||
|  |         post_change_redirect = reverse('django.contrib.auth.views.password_change_done') | ||||||
|     if request.method == "POST": |     if request.method == "POST": | ||||||
|         form = PasswordChangeForm(request.user, request.POST) |         form = PasswordChangeForm(request.user, request.POST) | ||||||
|         if form.is_valid(): |         if form.is_valid(): | ||||||
|             form.save() |             form.save() | ||||||
|             return HttpResponseRedirect(reverse('django.contrib.auth.views.password_change_done')) |             return HttpResponseRedirect(post_change_redirect) | ||||||
|     else: |     else: | ||||||
|         form = PasswordChangeForm(request.user) |         form = PasswordChangeForm(request.user) | ||||||
|     return render_to_response(template_name, { |     return render_to_response(template_name, { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user