-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathviews.py
More file actions
159 lines (134 loc) · 5.62 KB
/
Copy pathviews.py
File metadata and controls
159 lines (134 loc) · 5.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# -*- encoding: utf8 -*-
from django.views.generic.simple import direct_to_template
from django.shortcuts import get_object_or_404, redirect
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm, PasswordChangeForm, SetPasswordForm
from jebif_cv.constants import INFO_MSG, SUCCESS_MSG, ERROR_MSG
from users.forms import UserForm
#
# Public views (called from urls)
#
def collection(request):
if request.method == "GET":
return _index(request)
elif request.method == "POST":
return _create(request)
def entry(request, user_id):
user = get_object_or_404(User, id = user_id)
if request.method == "GET":
return _show(request, user)
elif request.method == "PUT":
return _update(request, user)
elif request.method == "DELETE":
return _delete(request, user)
def new(request):
return direct_to_template(request, "users/new.html", {
'form': UserCreationForm()
})
def edit(request, user_id):
user = get_object_or_404(User, id = user_id)
return direct_to_template(request, "users/edit.html", {
'form': UserForm(instance = user),
'user_edit': user
})
def delete(request, user_id):
user = get_object_or_404(User, id = user_id)
return _delete(request, user)
def change_password(request, user_id):
user = get_object_or_404(User, id = user_id)
if not user == request.user and not request.user.is_superuser:
message = ERROR_MSG % "Vous n'êtes pas autorisé à modifier le mot de passe de cet utilisateur."
request.user.message_set.create(message = message)
return redirect( request.user.get_absolute_url() )
if request.method == 'GET':
if user == request.user:
message = INFO_MSG % "Veuillez entrer votre ancien mot de passe, \
pour des raisons de sécurité, et saisissez ensuite deux fois votre nouveau mot \
de passe pour que nous puissions vérifier que vous l'avez entrer correctement"
request.user.message_set.create( message = message )
form = PasswordChangeForm(user)
else:
form = SetPasswordForm(user)
elif request.method == 'PUT':
data = request.PUT
if user == request.user:
form = PasswordChangeForm( user, data = data )
else:
form = SetPasswordForm( user, data = data )
if form.is_valid():
form.save()
message = SUCCESS_MSG % 'Nouveau mot de passe enregistré.'
request.user.message_set.create( message = message )
return redirect( user.get_absolute_url() )
else:
message = ERROR_MSG % 'Le formulaire est invalide, veuillez corriger les erreurs suivantes.'
request.user.message_set.create( message = message )
return direct_to_template(request, 'users/change_password.html', {
'user_edit': user,
'password_form': form
})
#
# Private views
#
def _index(request):
return direct_to_template(request, "users/index.html", {
'users': User.objects.all()
})
def _show(request, user):
return direct_to_template(request, "users/show.html", {
'user': user
})
def _create(request):
form = UserCreationForm(data = request.POST, files = request.FILES)
if form.is_valid():
user = form.save()
message = SUCCESS_MSG % "Utilisateur créé avec succès. Vous pouvez maintenant éditer son profil."
request.user.message_set.create( message = message )
return redirect( 'user_edit', user_id = user.id )
else:
message = ERROR_MSG % 'Le formulaire est invalide, veuillez corriger les erreurs suivantes.'
request.user.message_set.create( message = message )
return direct_to_template(request, "users/new.html", {
'form': form
})
def _update(request, user):
was_superuser = user.is_superuser
form = UserForm(instance = user, data = request.PUT)
if form.is_valid():
user = form.save()
# Check if modified user is the last superuser in which case
# his super-user status must remain True
if was_superuser \
and not user.is_superuser \
and not User.objects.filter(is_superuser = True):
message = INFO_MSG%"Au moins un utilisateur doit être super-utilisateur."
request.user.message_set.create( message = message )
user.is_superuser = True
user.save()
# Changes have been made.
message = SUCCESS_MSG % "Modification effectuée avec succès."
request.user.message_set.create( message = message )
if request.user.is_superuser:
return redirect( 'user_collection' )
else:
return redirect( 'user_edit', request.user.id )
else:
message = ERROR_MSG % 'Le formulaire est invalide, veuillez corriger les erreurs suivantes.'
request.user.message_set.create( message = message )
return direct_to_template(request, "users/edit.html", {
'user': user,
'form': form
})
def _delete(request, user):
if User.objects.all().count() == 1:
message = "Au moins un utilisateur est requis"
user.message_set.create( message = message )
elif User.objects.filter(is_superuser = True).count() == 1 and user.is_superuser:
message = "Au moins un super-utilisateur est requis"
user.message_set.create( message = message )
else:
user_profile = user.get_profile()
if user_profile.cv and user_profile.cv.pdf:
user_profile.cv.pdf.delete()
user.delete()
return redirect('user_collection')