app/django/contrib/admin/views/auth.py
changeset 54 03e267d67478
equal deleted inserted replaced
53:57b4279d8c4e 54:03e267d67478
       
     1 from django.contrib.admin.views.decorators import staff_member_required
       
     2 from django.contrib.auth.forms import UserCreationForm, AdminPasswordChangeForm
       
     3 from django.contrib.auth.models import User
       
     4 from django.core.exceptions import PermissionDenied
       
     5 from django import oldforms, template
       
     6 from django.shortcuts import render_to_response, get_object_or_404
       
     7 from django.http import HttpResponseRedirect
       
     8 from django.utils.html import escape
       
     9 from django.utils.translation import ugettext as _
       
    10 
       
    11 def user_add_stage(request):
       
    12     if not request.user.has_perm('auth.change_user'):
       
    13         raise PermissionDenied
       
    14     manipulator = UserCreationForm()
       
    15     if request.method == 'POST':
       
    16         new_data = request.POST.copy()
       
    17         errors = manipulator.get_validation_errors(new_data)
       
    18         if not errors:
       
    19             new_user = manipulator.save(new_data)
       
    20             msg = _('The %(name)s "%(obj)s" was added successfully.') % {'name': 'user', 'obj': new_user}
       
    21             if "_addanother" in request.POST:
       
    22                 request.user.message_set.create(message=msg)
       
    23                 return HttpResponseRedirect(request.path)
       
    24             else:
       
    25                 request.user.message_set.create(message=msg + ' ' + _("You may edit it again below."))
       
    26                 return HttpResponseRedirect('../%s/' % new_user.id)
       
    27     else:
       
    28         errors = new_data = {}
       
    29     form = oldforms.FormWrapper(manipulator, new_data, errors)
       
    30     return render_to_response('admin/auth/user/add_form.html', {
       
    31         'title': _('Add user'),
       
    32         'form': form,
       
    33         'is_popup': '_popup' in request.REQUEST,
       
    34         'add': True,
       
    35         'change': False,
       
    36         'has_delete_permission': False,
       
    37         'has_change_permission': True,
       
    38         'has_file_field': False,
       
    39         'has_absolute_url': False,
       
    40         'auto_populated_fields': (),
       
    41         'bound_field_sets': (),
       
    42         'first_form_field_id': 'id_username',
       
    43         'opts': User._meta,
       
    44         'username_help_text': User._meta.get_field('username').help_text,
       
    45     }, context_instance=template.RequestContext(request))
       
    46 user_add_stage = staff_member_required(user_add_stage)
       
    47 
       
    48 def user_change_password(request, id):
       
    49     if not request.user.has_perm('auth.change_user'):
       
    50         raise PermissionDenied
       
    51     user = get_object_or_404(User, pk=id)
       
    52     manipulator = AdminPasswordChangeForm(user)
       
    53     if request.method == 'POST':
       
    54         new_data = request.POST.copy()
       
    55         errors = manipulator.get_validation_errors(new_data)
       
    56         if not errors:
       
    57             new_user = manipulator.save(new_data)
       
    58             msg = _('Password changed successfully.')
       
    59             request.user.message_set.create(message=msg)
       
    60             return HttpResponseRedirect('..')
       
    61     else:
       
    62         errors = new_data = {}
       
    63     form = oldforms.FormWrapper(manipulator, new_data, errors)
       
    64     return render_to_response('admin/auth/user/change_password.html', {
       
    65         'title': _('Change password: %s') % escape(user.username),
       
    66         'form': form,
       
    67         'is_popup': '_popup' in request.REQUEST,
       
    68         'add': True,
       
    69         'change': False,
       
    70         'has_delete_permission': False,
       
    71         'has_change_permission': True,
       
    72         'has_absolute_url': False,
       
    73         'first_form_field_id': 'id_password1',
       
    74         'opts': User._meta,
       
    75         'original': user,
       
    76         'show_save': True,
       
    77     }, context_instance=template.RequestContext(request))
       
    78 user_change_password = staff_member_required(user_change_password)