|
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) |