1
- from django .shortcuts import render , redirect , reverse
1
+ from django .shortcuts import render , redirect , reverse , get_object_or_404
2
2
from django .contrib import auth , messages
3
3
from django .contrib .auth .decorators import login_required
4
4
from django .contrib .auth .models import User
5
5
from .models import Profile
6
- from accounts .forms import UserLoginForm , UserRegistrationForm
7
-
8
- # Create your views here.
6
+ from accounts .forms import UserLoginForm , UserRegistrationForm , EditProfileForm
9
7
10
8
11
9
def index (request ):
12
- """Render Index.html """
10
+ """Render Home Page """
13
11
return render (request , 'index.html' )
14
12
15
13
16
14
@login_required ()
17
15
def logout (request ):
18
16
"""Log the user out"""
19
17
auth .logout (request )
20
- messages .success (request , "You have been successfully logged out." )
18
+ messages .success (request , "Logged out." )
21
19
return redirect (reverse ('index' ))
22
20
23
21
@@ -32,15 +30,14 @@ def login(request):
32
30
password = request .POST ['password' ])
33
31
if user :
34
32
messages .success (
35
- request , "Welcome, " + user .username + ". You have been successfully logged in." )
33
+ request , "Logged in: " + user .username )
36
34
auth .login (user = user , request = request )
37
35
return redirect (reverse ('tickets' ))
38
36
else :
39
37
login_form .add_error (
40
38
None , "Your username or password is incorrect." )
41
39
else :
42
40
login_form = UserLoginForm ()
43
- # login_form = UserLoginForm()
44
41
return render (request , 'login.html' , {'login_form' : login_form })
45
42
46
43
@@ -54,7 +51,6 @@ def registration(request):
54
51
55
52
if registration_form .is_valid ():
56
53
user = registration_form .save ()
57
-
58
54
user = auth .authenticate (username = request .POST ['username' ],
59
55
password = request .POST ['password1' ])
60
56
if user :
@@ -71,25 +67,95 @@ def registration(request):
71
67
72
68
@login_required ()
73
69
def user_profile (request ):
74
- """User's profile page"""
75
- user = User .objects .get (email = request .user .email )
76
- return render (request , 'profile.html' , {"user" : user })
70
+ """Render User's profile page"""
71
+ user = get_object_or_404 (User , email = request .user .email )
72
+ user_profile_1 = get_object_or_404 (Profile , user_id = request .user .id )
73
+ if (request .method == 'POST' ):
74
+ form = EditProfileForm (
75
+ request .POST , request .FILES , instance = user_profile_1 )
76
+ if form .is_valid ():
77
+ user_profile_1 .save ()
78
+ messages .success (request , "Profile image updated." )
79
+ return redirect (user_profile )
80
+ else :
81
+ form = EditProfileForm (instance = user_profile_1 )
82
+ return render (request , 'profile.html' , {"user" : user , "form" : form })
77
83
78
84
79
85
@login_required ()
80
86
def user_list (request ):
81
87
"""Shows list of all users"""
82
- # users = User.objects.filter()
83
- sort_field = request .GET ['sort_by' ] if 'sort_by' in request .GET else 'id'
84
- users = User .objects .filter ().order_by (sort_field )
85
- # Staff
86
- staff = User .objects .filter (is_staff = 1 ).order_by (sort_field )
87
- # Submitters
88
- submitters = User .objects .filter (is_staff = 0 ).order_by (sort_field )
88
+ users = User .objects .filter ()
89
+ staff = User .objects .filter (is_staff = 1 )
90
+ submitters = User .objects .filter (is_staff = 0 )
89
91
return render (request , 'user_list.html' , {"users" : users ,
90
92
"staff" : staff ,
91
93
"submitters" : submitters })
92
94
93
- # @login_required()
94
- # def update_email(request):
95
- # """Updates User Email"""
95
+
96
+ @login_required ()
97
+ def update_first_name (request ):
98
+ """User Updates First Name"""
99
+ user = User .objects .get (email = request .user .email )
100
+ if request .method == 'POST' :
101
+ form = request .POST
102
+ if form ['updated_first_name' ]:
103
+ user .first_name = form ['updated_first_name' ]
104
+ messages .success (request , "First name updated." )
105
+ else :
106
+ user .first_name = ''
107
+ messages .success (request , "First name cleared." )
108
+ user .save ()
109
+ return redirect (user_profile )
110
+
111
+
112
+ @login_required ()
113
+ def update_last_name (request ):
114
+ """User Updates Last Name"""
115
+ user = User .objects .get (email = request .user .email )
116
+ if request .method == 'POST' :
117
+ form = request .POST
118
+ if form ['updated_last_name' ]:
119
+ user .last_name = form ['updated_last_name' ]
120
+ messages .success (request , "Last name updated." )
121
+ else :
122
+ user .last_name = ''
123
+ messages .success (request , "Last name cleared." )
124
+ user .save ()
125
+ return redirect (user_profile )
126
+
127
+
128
+ @login_required ()
129
+ def update_zoomid (request , pk ):
130
+ """User Updates Zoom ID"""
131
+ user = get_object_or_404 (User , pk = pk )
132
+ if request .method == 'POST' :
133
+ form = request .POST
134
+ if form ['updated_zoomid' ]:
135
+ user .profile .zoom_id = form ['updated_zoomid' ]
136
+ messages .success (request , "Zoom ID updated successfully." )
137
+ else :
138
+ user .profile .zoom_id = None
139
+ messages .success (request , "Zoom ID cleared." )
140
+ user .profile .save ()
141
+ return redirect (user_profile )
142
+
143
+
144
+ @login_required ()
145
+ def grant_staff_access (request , pk ):
146
+ """Allows Code Institute assessors to be immediately granted Staff Access.
147
+ This is to ensure Assessors can see the full feature set.
148
+ In a non-assessment situation, clicking Request Staff Access link would send email to Admin,
149
+ who could then set is_staff to True
150
+ """
151
+ user = get_object_or_404 (User , pk = pk )
152
+ if request .method == 'POST' :
153
+ if user .is_staff :
154
+ messages .info (
155
+ request , "You already have staff access." )
156
+ else :
157
+ user .is_staff = True
158
+ user .save ()
159
+ messages .success (
160
+ request , "You have been granted Staff Access as a CI Assessor. You can now edit all tickets." )
161
+ return redirect (user_profile )
0 commit comments