Changeset 8162 for django/trunk/django/contrib/auth/views.py
- Timestamp:
- 07/31/08 15:47:53 (5 months ago)
- Files:
-
- django/trunk/django/contrib/auth/views.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/auth/views.py
r7967 r8162 2 2 from django.contrib.auth.decorators import login_required 3 3 from django.contrib.auth.forms import AuthenticationForm 4 from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm, AdminPasswordChangeForm 4 from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm, PasswordChangeForm, AdminPasswordChangeForm 5 from django.contrib.auth.tokens import default_token_generator 5 6 from django.core.exceptions import PermissionDenied 6 7 from django.shortcuts import render_to_response, get_object_or_404 7 8 from django.contrib.sites.models import Site, RequestSite 8 from django.http import HttpResponseRedirect 9 from django.http import HttpResponseRedirect, Http404 9 10 from django.template import RequestContext 10 from django.utils.http import urlquote 11 from django.utils.http import urlquote, base36_to_int 11 12 from django.utils.html import escape 12 13 from django.utils.translation import ugettext as _ … … 66 67 return HttpResponseRedirect('%s?%s=%s' % (login_url, urlquote(redirect_field_name), urlquote(next))) 67 68 69 # 4 views for password reset: 70 # - password_reset sends the mail 71 # - password_reset_done shows a success message for the above 72 # - password_reset_confirm checks the link the user clicked and 73 # prompts for a new password 74 # - password_reset_complete shows a success message for the above 75 68 76 def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', 69 77 email_template_name='registration/password_reset_email.html', 70 password_reset_form=PasswordResetForm ):78 password_reset_form=PasswordResetForm, token_generator=default_token_generator): 71 79 if request.method == "POST": 72 80 form = password_reset_form(request.POST) 73 81 if form.is_valid(): 82 opts = {} 83 opts['use_https'] = request.is_secure() 84 opts['token_generator'] = token_generator 74 85 if is_admin_site: 75 form.save(domain_override=request.META['HTTP_HOST'])86 opts['domain_override'] = request.META['HTTP_HOST'] 76 87 else: 77 if Site._meta.installed:78 form.save(email_template_name=email_template_name)79 else:80 form.save(domain_override=RequestSite(request).domain, email_template_name=email_template_name)88 opts['email_template_name'] = email_template_name 89 if not Site._meta.installed: 90 opts['domain_override'] = RequestSite(request).domain 91 form.save(**opts) 81 92 return HttpResponseRedirect('%sdone/' % request.path) 82 93 else: … … 87 98 88 99 def password_reset_done(request, template_name='registration/password_reset_done.html'): 100 return render_to_response(template_name, context_instance=RequestContext(request)) 101 102 def password_reset_confirm(request, uidb36=None, token=None, template_name='registration/password_reset_confirm.html', 103 token_generator=default_token_generator, set_password_form=SetPasswordForm): 104 """ 105 View that checks the hash in a password reset link and presents a 106 form for entering a new password. 107 """ 108 assert uidb36 is not None and token is not None # checked by URLconf 109 try: 110 uid_int = base36_to_int(uidb36) 111 except ValueError: 112 raise Http404 113 114 user = get_object_or_404(User, id=uid_int) 115 context_instance = RequestContext(request) 116 117 if token_generator.check_token(user, token): 118 context_instance['validlink'] = True 119 if request.method == 'POST': 120 form = set_password_form(user, request.POST) 121 if form.is_valid(): 122 form.save() 123 return HttpResponseRedirect("../done/") 124 else: 125 form = set_password_form(None) 126 else: 127 context_instance['validlink'] = False 128 form = None 129 context_instance['form'] = form 130 return render_to_response(template_name, context_instance=context_instance) 131 132 def password_reset_complete(request, template_name='registration/password_reset_complete.html'): 89 133 return render_to_response(template_name, context_instance=RequestContext(request)) 90 134
