Django

Code

Show
Ignore:
Timestamp:
07/18/08 18:54:34 (4 months ago)
Author:
brosner
Message:

Merged the newforms-admin branch into trunk.

This is a backward incompatible change. The admin contrib app has been
refactored. The newforms module has several improvements including FormSets?
and Media definitions.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/auth/views.py

    r7749 r7967  
    1 from django import oldforms 
    21from django.contrib.auth import REDIRECT_FIELD_NAME 
    32from django.contrib.auth.decorators import login_required 
    43from django.contrib.auth.forms import AuthenticationForm 
    5 from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm 
     4from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm, AdminPasswordChangeForm 
     5from django.core.exceptions import PermissionDenied 
     6from django.shortcuts import render_to_response, get_object_or_404 
    67from django.contrib.sites.models import Site, RequestSite 
    78from django.http import HttpResponseRedirect 
    8 from django.shortcuts import render_to_response 
    99from django.template import RequestContext 
    1010from django.utils.http import urlquote 
     11from django.utils.html import escape 
    1112from django.utils.translation import ugettext as _ 
     13from django.contrib.auth.models import User 
     14import re 
    1215 
    1316def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME): 
    1417    "Displays the login form and handles the login action." 
    15     manipulator = AuthenticationForm() 
    1618    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()
    2022            # Light security check -- make sure redirect_to isn't garbage. 
    2123            if not redirect_to or '//' in redirect_to or ' ' in redirect_to: 
     
    2325                redirect_to = settings.LOGIN_REDIRECT_URL 
    2426            from django.contrib.auth import login 
    25             login(request, manipulator.get_user()) 
     27            login(request, form.get_user()) 
    2628            if request.session.test_cookie_worked(): 
    2729                request.session.delete_test_cookie() 
    2830            return HttpResponseRedirect(redirect_to) 
    2931    else: 
    30         errors = {} 
     32        form = AuthenticationForm(request) 
    3133    request.session.set_test_cookie() 
    32  
    3334    if Site._meta.installed: 
    3435        current_site = Site.objects.get_current() 
    3536    else: 
    3637        current_site = RequestSite(request) 
    37  
    3838    return render_to_response(template_name, { 
    39         'form': oldforms.FormWrapper(manipulator, request.POST, errors)
     39        'form': form
    4040        redirect_field_name: redirect_to, 
    4141        'site_name': current_site.name, 
     
    6767 
    6868def 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(): 
    7674            if is_admin_site: 
    7775                form.save(domain_override=request.META['HTTP_HOST']) 
     
    8280                    form.save(domain_override=RequestSite(request).domain, email_template_name=email_template_name) 
    8381            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)) 
    8687 
    8788def password_reset_done(request, template_name='registration/password_reset_done.html'): 
     
    8990 
    9091def 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() 
    9896            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)) 
    101102password_change = login_required(password_change) 
    102103 
    103104def password_change_done(request, template_name='registration/password_change_done.html'): 
    104105    return render_to_response(template_name, context_instance=RequestContext(request)) 
     106 
     107# TODO: move to admin.py in the ModelAdmin 
     108def 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))