Changeset 7967 for django/trunk/django/contrib/auth/views.py
- Timestamp:
- 07/18/08 18:54:34 (4 months ago)
- Files:
-
- django/trunk/django/contrib/auth/views.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/auth/views.py
r7749 r7967 1 from django import oldforms2 1 from django.contrib.auth import REDIRECT_FIELD_NAME 3 2 from django.contrib.auth.decorators import login_required 4 3 from django.contrib.auth.forms import AuthenticationForm 5 from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm 4 from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm, AdminPasswordChangeForm 5 from django.core.exceptions import PermissionDenied 6 from django.shortcuts import render_to_response, get_object_or_404 6 7 from django.contrib.sites.models import Site, RequestSite 7 8 from django.http import HttpResponseRedirect 8 from django.shortcuts import render_to_response9 9 from django.template import RequestContext 10 10 from django.utils.http import urlquote 11 from django.utils.html import escape 11 12 from django.utils.translation import ugettext as _ 13 from django.contrib.auth.models import User 14 import re 12 15 13 16 def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME): 14 17 "Displays the login form and handles the login action." 15 manipulator = AuthenticationForm()16 18 redirect_to = request.REQUEST.get(redirect_field_name, '') 17 if request. POST:18 errors = manipulator.get_validation_errors(request.POST)19 if not errors:19 if request.method == "POST": 20 form = AuthenticationForm(data=request.POST) 21 if form.is_valid(): 20 22 # Light security check -- make sure redirect_to isn't garbage. 21 23 if not redirect_to or '//' in redirect_to or ' ' in redirect_to: … … 23 25 redirect_to = settings.LOGIN_REDIRECT_URL 24 26 from django.contrib.auth import login 25 login(request, manipulator.get_user())27 login(request, form.get_user()) 26 28 if request.session.test_cookie_worked(): 27 29 request.session.delete_test_cookie() 28 30 return HttpResponseRedirect(redirect_to) 29 31 else: 30 errors = {}32 form = AuthenticationForm(request) 31 33 request.session.set_test_cookie() 32 33 34 if Site._meta.installed: 34 35 current_site = Site.objects.get_current() 35 36 else: 36 37 current_site = RequestSite(request) 37 38 38 return render_to_response(template_name, { 39 'form': oldforms.FormWrapper(manipulator, request.POST, errors),39 'form': form, 40 40 redirect_field_name: redirect_to, 41 41 'site_name': current_site.name, … … 67 67 68 68 def password_reset(request, is_admin_site=False, template_name='registration/password_reset_form.html', 69 email_template_name='registration/password_reset_email.html'): 70 new_data, errors = {}, {} 71 form = PasswordResetForm() 72 if request.POST: 73 new_data = request.POST.copy() 74 errors = form.get_validation_errors(new_data) 75 if not errors: 69 email_template_name='registration/password_reset_email.html', 70 password_reset_form=PasswordResetForm): 71 if request.method == "POST": 72 form = password_reset_form(request.POST) 73 if form.is_valid(): 76 74 if is_admin_site: 77 75 form.save(domain_override=request.META['HTTP_HOST']) … … 82 80 form.save(domain_override=RequestSite(request).domain, email_template_name=email_template_name) 83 81 return HttpResponseRedirect('%sdone/' % request.path) 84 return render_to_response(template_name, {'form': oldforms.FormWrapper(form, new_data, errors)}, 85 context_instance=RequestContext(request)) 82 else: 83 form = password_reset_form() 84 return render_to_response(template_name, { 85 'form': form, 86 }, context_instance=RequestContext(request)) 86 87 87 88 def password_reset_done(request, template_name='registration/password_reset_done.html'): … … 89 90 90 91 def password_change(request, template_name='registration/password_change_form.html'): 91 new_data, errors = {}, {} 92 form = PasswordChangeForm(request.user) 93 if request.POST: 94 new_data = request.POST.copy() 95 errors = form.get_validation_errors(new_data) 96 if not errors: 97 form.save(new_data) 92 if request.method == "POST": 93 form = PasswordChangeForm(request.user, request.POST) 94 if form.is_valid(): 95 form.save() 98 96 return HttpResponseRedirect('%sdone/' % request.path) 99 return render_to_response(template_name, {'form': oldforms.FormWrapper(form, new_data, errors)}, 100 context_instance=RequestContext(request)) 97 else: 98 form = PasswordChangeForm(request.user) 99 return render_to_response(template_name, { 100 'form': form, 101 }, context_instance=RequestContext(request)) 101 102 password_change = login_required(password_change) 102 103 103 104 def password_change_done(request, template_name='registration/password_change_done.html'): 104 105 return render_to_response(template_name, context_instance=RequestContext(request)) 106 107 # TODO: move to admin.py in the ModelAdmin 108 def user_change_password(request, id): 109 if not request.user.has_perm('auth.change_user'): 110 raise PermissionDenied 111 user = get_object_or_404(User, pk=id) 112 if request.method == 'POST': 113 form = AdminPasswordChangeForm(user, request.POST) 114 if form.is_valid(): 115 new_user = form.save() 116 msg = _('Password changed successfully.') 117 request.user.message_set.create(message=msg) 118 return HttpResponseRedirect('..') 119 else: 120 form = AdminPasswordChangeForm(user) 121 return render_to_response('admin/auth/user/change_password.html', { 122 'title': _('Change password: %s') % escape(user.username), 123 'form': form, 124 'is_popup': '_popup' in request.REQUEST, 125 'add': True, 126 'change': False, 127 'has_delete_permission': False, 128 'has_change_permission': True, 129 'has_absolute_url': False, 130 'opts': User._meta, 131 'original': user, 132 'save_as': False, 133 'show_save': True, 134 'root_path': re.sub('auth/user/(\d+)/password/$', '', request.path), 135 }, context_instance=RequestContext(request))
